提交 7359675b 编写于 作者: ToTensor's avatar ToTensor

update dir

上级 0104d5ec
...@@ -3,9 +3,8 @@ ...@@ -3,9 +3,8 @@
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。
请你从下面四个选项中选择正确答案 请你推算一下,他当时到底有多年轻
## 答案 ## 答案
......
...@@ -48,7 +48,7 @@ bool check(int n) ...@@ -48,7 +48,7 @@ bool check(int n)
int tmpn = n % 10; int tmpn = n % 10;
if (tmpn == 2 || tmpn == 0 || tmpn == 1 || tmpn == 9) if (tmpn == 2 || tmpn == 0 || tmpn == 1 || tmpn == 9)
return true; return true;
__________________ __________________;
} }
return false; return false;
} }
...@@ -72,7 +72,7 @@ int main() ...@@ -72,7 +72,7 @@ int main()
## 答案 ## 答案
```c ```c
n /= 10; n /= 10;
``` ```
## 选项 ## 选项
...@@ -80,17 +80,17 @@ int main() ...@@ -80,17 +80,17 @@ int main()
### A ### A
```c ```c
n %= 10; n %= 10;
``` ```
### B ### B
```c ```c
break; break;
``` ```
### C ### C
```c ```c
continue; continue;
``` ```
...@@ -6,11 +6,57 @@ ...@@ -6,11 +6,57 @@
容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20 行第20 列的数是多少? 容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20 行第20 列的数是多少?
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i = 0;
int j = 0;
int cnt = 2;
int a[250][250];
a[0][0] = 1;
while (cnt < 1000)
{
j++;
while (i != -1 && j != -1)
{
a[i][j] = cnt++;
if (j == 0)
break;
i++;
j--;
}
i++;
while (i != -1 && j != -1)
{
___________;
}
}
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
cout << setw(5) << a[i][j] << ' ';
}
cout << '\n';
}
cout << a[19][19];
return 0;
}
```
## 答案 ## 答案
```c ```c
761 a[i][j] = cnt++;
if (i == 0)
break;
i--;
j++;
``` ```
## 选项 ## 选项
...@@ -18,17 +64,29 @@ ...@@ -18,17 +64,29 @@
### A ### A
```c ```c
759 a[i][j] = cnt++;
if (i == 0)
break;
i++;
j--;
``` ```
### B ### B
```c ```c
760 a[i][j] = cnt++;
if (i == 0)
break;
i--;
j--;
``` ```
### C ### C
```c ```c
769 a[i][j] = cnt++;
if (i == 0)
break;
i++;
j++;
``` ```
...@@ -85,7 +85,7 @@ int main() ...@@ -85,7 +85,7 @@ int main()
{ {
cnt[logs[i].y]++; cnt[logs[i].y]++;
while (logs[i].x - logs[j].x >= d) while (logs[i].x - logs[j].x >= d)
__________________ __________________;
if (cnt[logs[i].y] >= k) if (cnt[logs[i].y] >= k)
st[logs[i].y] = true; st[logs[i].y] = true;
} }
......
...@@ -2,11 +2,43 @@ ...@@ -2,11 +2,43 @@
整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几) 整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <stdio.h>
int main()
{
int year, day, dayrun = 0, dayping = 0, sumday = 0;
int count = 0;
for (year = 1901; year <= 2000; year++)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
dayrun += 366;
}
else
{
dayping += 365;
}
}
sumday = dayrun + dayping;
__________________________;
printf("%d", count);
return 0;
}
```
## 答案 ## 答案
```c ```c
5217 for (day = 2; day <= sumday - 7; day += 7)
{
count++;
}
``` ```
## 选项 ## 选项
...@@ -14,17 +46,26 @@ ...@@ -14,17 +46,26 @@
### A ### A
```c ```c
5218 for (day = 2; day <= sumday; day += 7)
{
count++;
}
``` ```
### B ### B
```c ```c
5216 for (day = 2; day < sumday; day += 7)
{
count++;
}
``` ```
### C ### C
```c ```c
5210 for (day = 2; day <= sumday - 7; day++)
{
count++;
}
``` ```
...@@ -6,11 +6,35 @@ ...@@ -6,11 +6,35 @@
A 国估计被测的民众的感染率大概是 1%,呈均匀分布。请问 k 取多少能最节省试剂盒? A 国估计被测的民众的感染率大概是 1%,呈均匀分布。请问 k 取多少能最节省试剂盒?
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <stdio.h>
int main()
{
double m = 4537;
double min = 9999999;
double k, sum, ans;
for (k = 1; k <= 100; k++)
{
sum = (m - k) / k + 0.01 * m * k + 1;
__________________;
}
printf("%d\n", (int)ans);
return 0;
}
```
## 答案 ## 答案
```c ```c
10 if (sum < min)
{
min = sum;
ans = k;
}
``` ```
## 选项 ## 选项
...@@ -18,17 +42,29 @@ A 国估计被测的民众的感染率大概是 1%,呈均匀分布。请问 k ...@@ -18,17 +42,29 @@ A 国估计被测的民众的感染率大概是 1%,呈均匀分布。请问 k
### A ### A
```c ```c
8 if (sum < min)
{
min = sum;
ans = k + 1;
}
``` ```
### B ### B
```c ```c
9 if (sum > min)
{
min = sum;
ans = k;
}
``` ```
### C ### C
```c ```c
12 if (sum >= min)
{
min = sum;
ans = k + 1;
}
``` ```
...@@ -4,11 +4,34 @@ ...@@ -4,11 +4,34 @@
请问,他从多少岁开始过生日party的? 请问,他从多少岁开始过生日party的?
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char *argv[])
{
int age = 0;
int sum = 0;
for (int i = 0; i < 100; sum = 0, i++)
for (int j = i; j < 100; j++)
{
_____________________;
if (sum == 236)
cout << i << " " << j;
else if (sum > 236)
break;
}
return 0;
}
```
## 答案 ## 答案
```c ```c
26 sum += j;
``` ```
## 选项 ## 选项
...@@ -16,17 +39,17 @@ ...@@ -16,17 +39,17 @@
### A ### A
```c ```c
24 sum = j;
``` ```
### B ### B
```c ```c
25 sum += 1;
``` ```
### C ### C
```c ```c
27 sum = j + 1;
``` ```
...@@ -15,11 +15,36 @@ A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要 ...@@ -15,11 +15,36 @@ A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢? 如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int res = 0;
do
{
int x1 = a[0] + a[1] + a[2] + a[3];
int x2 = a[3] + a[4] + a[5] + a[6];
int x3 = a[6] + a[7] + a[8] + a[0];
__________________;
} while (next_permutation(a, a + 9));
cout << res / 3 / 2 << endl;
return 0;
}
```
## 答案 ## 答案
```c ```c
144 if (x1 == x2 && x2 == x3)
{
res++;
}
``` ```
## 选项 ## 选项
...@@ -27,17 +52,26 @@ A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要 ...@@ -27,17 +52,26 @@ A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要
### A ### A
```c ```c
124 if (x1 == x2 || x2 == x3)
{
res++;
}
``` ```
### B ### B
```c ```c
128 if (x1 == x2 || x1 == x3)
{
res++;
}
``` ```
### C ### C
```c ```c
132 if (x1 == x2)
{
res++;
}
``` ```
...@@ -14,11 +14,55 @@ ...@@ -14,11 +14,55 @@
3. 其平方数的每个数位不含原数字的任何组成数位 3. 其平方数的每个数位不含原数字的任何组成数位
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <iostream>
using namespace std;
int main()
{
int num[10], flag;
for (long long i = 123456; i <= 987654; i++)
{
long long a = i;
long long b = i * i;
memset(num, 0, sizeof(num));
flag = 1;
while (a)
{
_________________;
}
if (flag)
{
while (b)
{
if (num[b % 10])
{
flag = 0;
break;
}
b /= 10;
}
if (flag)
cout << i << endl;
}
}
return 0;
}
```
## 答案 ## 答案
```c ```c
639172 if (num[a % 10])
{
flag = 0;
break;
}
num[a % 10]++;
a /= 10;
``` ```
## 选项 ## 选项
...@@ -26,17 +70,35 @@ ...@@ -26,17 +70,35 @@
### A ### A
```c ```c
629173 if (num[a % 10])
{
flag = 0;
continue;
}
num[a % 10]++;
a /= 10;
``` ```
### B ### B
```c ```c
691372 if (num[a % 10])
{
flag = 0;
continue;
}
num[a % 10]++;
a %= 10;
``` ```
### C ### C
```c ```c
627193 if (num[a % 10])
{
flag = 0;
break;
}
num[a % 10]++;
a %= 10;
``` ```
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
比如: 比如:
``` ```json
5 = 0^ 2 + 0^ 2 + 1^ 2 + 2^2 5 = 0^ 2 + 0^ 2 + 1^ 2 + 2^2
7 = 1^ 2 + 1^ 2 + 1^ 2 + 2^2 7 = 1^ 2 + 1^ 2 + 1^ 2 + 2^2
(^符号表示乘方的意思) (^符号表示乘方的意思)
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
要求你对4个数排序: 要求你对4个数排序:
``` ```json
0 <= a <= b <= c <= d 0 <= a <= b <= c <= d
``` ```
...@@ -30,37 +30,37 @@ ...@@ -30,37 +30,37 @@
例如,输入: 例如,输入:
``` ```json
5 5
``` ```
则程序应该输出: 则程序应该输出:
``` ```json
0 0 1 2 0 0 1 2
``` ```
再例如,输入: 再例如,输入:
``` ```json
12 12
``` ```
则程序应该输出: 则程序应该输出:
``` ```json
0 2 2 2 0 2 2 2
``` ```
再例如,输入: 再例如,输入:
``` ```json
773535 773535
``` ```
则程序应该输出: 则程序应该输出:
``` ```json
1 1 267 838 1 1 267 838
``` ```
...@@ -100,7 +100,7 @@ int main() ...@@ -100,7 +100,7 @@ int main()
int l = 0, r = m - 1; int l = 0, r = m - 1;
while (l < r) while (l < r)
{ {
__________________ __________________;
if (sum[mid].s >= t) if (sum[mid].s >= t)
r = mid; r = mid;
else else
......
...@@ -9,10 +9,33 @@ ...@@ -9,10 +9,33 @@
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2? 请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
```c
#include <bits/stdc++.h>
using namespace std;
int main()
{
int ans = 0, x;
for (int i = 1; i <= 2020; i++)
{
x = i;
while (x)
{
________________;
}
}
cout << ans;
return 0;
}
```
## 答案 ## 答案
```c ```c
624 if (x % 10 == 2)
{
ans++;
}
x /= 10;
``` ```
## 选项 ## 选项
...@@ -20,17 +43,29 @@ ...@@ -20,17 +43,29 @@
### A ### A
```c ```c
626 if (x % 10 == 2)
{
ans++;
}
x %= 10;
``` ```
### B ### B
```c ```c
622 if (x / 10 == 2)
{
ans++;
}
x /= 10;
``` ```
### C ### C
```c ```c
628 if (x / 10 == 2)
{
ans++;
}
x %= 10;
``` ```
...@@ -12,11 +12,31 @@ X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟 ...@@ -12,11 +12,31 @@ X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。 本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
以下程序实现了这一功能,请你补全空白处内容:
```c
#include <iostream>
using namespace std;
int main()
{
int x = 10, y = 90;
for (int i = 1; i <= 120; i++)
{
________________;
}
cout << y << endl;
}
```
## 答案 ## 答案
```c ```c
94371840 if (i % 2 == 1)
y -= x;
if (i % 4 == 0)
y *= 2;
if (i % 6 == 0)
x *= 2;
``` ```
## 选项 ## 选项
...@@ -24,17 +44,32 @@ X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟 ...@@ -24,17 +44,32 @@ X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟
### A ### A
```c ```c
167772160 if (i % 2 == 1)
y -= x;
if (i % 4 == 2)
y *= 2;
if (i % 6 == 3)
x *= 2;
``` ```
### B ### B
```c ```c
47185920 if (i % 2 == 1)
y -= x;
if (i % 4 == 1)
y *= 2;
if (i % 6 == 2)
x *= 2;
``` ```
### C ### C
```c ```c
92160 if (i % 2 == 1)
y *= x;
if (i % 4 == 0)
y *= 2;
if (i % 6 == 0)
x *= 2;
``` ```
...@@ -52,7 +52,7 @@ int main() ...@@ -52,7 +52,7 @@ int main()
{ {
cin >> a[i].xm >> a[i].xh >> a[i].yy >> a[i].sx >> a[i].cpp; cin >> a[i].xm >> a[i].xh >> a[i].yy >> a[i].sx >> a[i].cpp;
sum = a[i].yy + a[i].sx + a[i].cpp; sum = a[i].yy + a[i].sx + a[i].cpp;
__________________ __________________;
} }
cout << maxs << endl cout << maxs << endl
<< mins; << mins;
...@@ -63,16 +63,16 @@ int main() ...@@ -63,16 +63,16 @@ int main()
## 答案 ## 答案
```c ```c
if (min > sum) if (min > sum)
{ {
min = sum; min = sum;
mins = a[i].xm; mins = a[i].xm;
} }
if (max < sum) if (max < sum)
{ {
max = sum; max = sum;
maxs = a[i].xm; maxs = a[i].xm;
} }
``` ```
## 选项 ## 选项
...@@ -80,44 +80,44 @@ int main() ...@@ -80,44 +80,44 @@ int main()
### A ### A
```c ```c
if (min < sum) if (min < sum)
{ {
min = sum; min = sum;
mins = a[i].xm; mins = a[i].xm;
} }
if (max > sum) if (max > sum)
{ {
max = sum; max = sum;
maxs = a[i].xm; maxs = a[i].xm;
} }
``` ```
### B ### B
```c ```c
if (min > sum) if (min > sum)
{ {
max = sum; max = sum;
mins = a[i].xm; mins = a[i].xm;
} }
if (max < sum) if (max < sum)
{ {
min = sum; min = sum;
maxs = a[i].xm; maxs = a[i].xm;
} }
``` ```
### C ### C
```c ```c
if (min > sum) if (min > sum)
{ {
min = sum; min = sum;
maxs = a[i].xm; maxs = a[i].xm;
} }
if (max < sum) if (max < sum)
{ {
max = sum; max = sum;
mins = a[i].xm; mins = a[i].xm;
} }
``` ```
...@@ -8,11 +8,48 @@ ...@@ -8,11 +8,48 @@
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。 有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
以下程序实现了这一功能,请你填补空白处内容:
```c
#include <stdio.h>
int main()
{
int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int days = 1000;
int year = 2014, month = 11, day = 9;
int i;
for (i = 0; i < days; i++)
{
day++;
if (day > monthDays[month - 1])
{
day = 1;
month++;
if (month > 12)
{
month = 1;
year++;
____________________;
}
}
}
printf("%d-%d-%d\n", year, month, day);
getchar();
return 0;
}
```
## 答案 ## 答案
```c ```c
2017-08-05 if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
monthDays[1] = 29;
else
monthDays[1] = 28;
``` ```
## 选项 ## 选项
...@@ -20,17 +57,26 @@ ...@@ -20,17 +57,26 @@
### A ### A
```c ```c
2017-09-05 if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
monthDays[1] = 30;
else
monthDays[1] = 29;
``` ```
### B ### B
```c ```c
2017-08-06 if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
monthDays[1] = 31;
else
monthDays[1] = 30;
``` ```
### C ### C
```c ```c
2017-09-06 if ((year % 400 == 0) && (year % 4 == 0 && year % 100 != 0))
monthDays[1] = 30;
else
monthDays[1] = 29;
``` ```
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
比较简单的一种是用连分数: 比较简单的一种是用连分数:
``` ```json
1 1
黄金数 = --------------------- 黄金数 = ---------------------
1 1
......
...@@ -39,7 +39,7 @@ void f(int x) ...@@ -39,7 +39,7 @@ void f(int x)
for (i = 0; i < 32; i++) for (i = 0; i < 32; i++)
printf("%d", (x >> (31 - i)) & 1); printf("%d", (x >> (31 - i)) & 1);
printf(" "); printf(" ");
__________________ __________________;
for (i = 0; i < 32; i++) for (i = 0; i < 32; i++)
printf("%d", (x >> (31 - i)) & 1); printf("%d", (x >> (31 - i)) & 1);
printf("\n"); printf("\n");
......
...@@ -1022,11 +1022,42 @@ REPEAT 9: ...@@ -1022,11 +1022,42 @@ REPEAT 9:
A = A + 5 A = A + 5
``` ```
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <iostream>
using namespace std;
int main()
{
int res = 0;
for (int i = 0; i < 2; i++)
{
res += 4;
for (int j = 0; j < 5; j++)
{
for (int p = 0; p < 6; p++)
{
_______________;
}
res += 7;
}
res += 8;
}
res += 9;
cout << res;
return 0;
}
```
## 答案 ## 答案
```c ```c
403 res += 5;
``` ```
## 选项 ## 选项
...@@ -1034,17 +1065,17 @@ REPEAT 9: ...@@ -1034,17 +1065,17 @@ REPEAT 9:
### A ### A
```c ```c
400 res += 3;
``` ```
### B ### B
```c ```c
401 res += 1;
``` ```
### C ### C
```c ```c
402 res += 2;
``` ```
...@@ -14,11 +14,32 @@ ...@@ -14,11 +14,32 @@
如果一共有100层,共有多少个煤球? 如果一共有100层,共有多少个煤球?
以下程序实现了这一功能,请你补全以下空白处内容:
```c
#include <iostream>
using namespace std;
int f[101];
int main()
{
f[1] = 1;
for (int i = 2; i <= 100; i++)
f[i] = f[i - 1] + i;
for (int i = 2; i <= 100; i++)
____________________;
cout << f[100];
return 0;
}
```
## 答案 ## 答案
```c ```c
171700 f[i] = f[i - 1] + f[i];
``` ```
## 选项 ## 选项
...@@ -26,17 +47,17 @@ ...@@ -26,17 +47,17 @@
### A ### A
```c ```c
166650 f[i] = f[i + 1] + f[i];
``` ```
### B ### B
```c ```c
176851 f[i] = f[i - 1] + f[i - 2];
``` ```
### C ### C
```c ```c
182104 f[i] = f[i + 1] + f[i];
``` ```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册