如此编码#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include<bits/stdc++.h>
using namespace std;
const int N = 25;
int n,m;
int a[N],c[N],b[N];
int main(){
cin>>n>>m;
for(int i = 1; i <= n; i++) cin>>a[i];
c[0] = 1;
c[1] = a[1];
for(int i = 2 ; i <= n; i++) c[i] = c[i-1] * a[i];
for(int i = 1; i <= n; i++){
b[i] = m % a[i];
m = m / a[i];
}
for(int i = 1; i <= n; i++) cout<<b[i]<<" ";
return 0;
}
|
出现次数最多的数#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include<bits/stdc++.h>
using namespace std;
int num[10005];
int main(){
int n, num_max;
cin>>n;
memset(num, 0, sizeof(num));
while(n--){
int si;
cin >> si;
num[si]++;
if(num[num_max] == num[si]) num_max = min(num_max, si);
else if(num[num_max] < num[si]) num_max = si;
}
cout << num_max<<endl;
return 0;
}
|
ISBN号码#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include<bits/stdc++.h>
using namespace std;
int getnumber(char x){
return x-'0';
}
int main(){
string isbn;
cin >> isbn;
int sum, x, c;
c = 1;
sum = 0;
for(int i = 0; i < 12; i++){
if(isbn[i] != '-'){
int n = getnumber(isbn[i]);
sum += c * n;
c ++;
}
}
x = sum % 11;
if(getnumber(isbn[12]) == x || (isbn[12] == 'X' && x == 10)) cout<<"Right"<<endl;
else {
if(x == 10) isbn[12] = 'X';
else isbn[12] = '0' + x;
cout<<isbn<<endl;
}
return 0;
}
|
在写这道题的时候发现了关于for循环作用域的一个小细节,for循环内对外部变量的初始化只针对for循环内部有效(很像函数)。当我在for循环的小括号内对变量c和sum初始化后,for循环内部正常运行,但是在外部计算sum取余11时,sum的值就变成;但是如果我在大括号内部初始化c和sum变量时,在for循环外部也可以正常使用。
最大的矩形#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include<bits/stdc++.h>
using namespace std;
int h[1005];
int main(){
int n;
cin>>n;
memset(h, 0, sizeof(h));
for(int i = 0; i < n; i ++){
cin>>h[i];
}
int ans = 0;
for(int i = 0; i < n; i++){
int imax = 0;
int hmin = h[i];
for(int j = i; j < n; j++){
hmin = min(hmin, h[j]);
imax = max(hmin * (j - i + 1), imax);
}
ans = max(imax, ans);
}
cout<<ans<<endl;
return 0;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
n = int(input())
h = list(map(int, input().split()))
ans = 0
for i in range(0, n):
imax = 0
hmin = h[i]
for j in range(i, n):
hmin = min(hmin, h[j])
imax = max(hmin * (j - i + 1), imax);
ans = max(imax, ans);
print(ans)
|