i信息学奥赛

加入QQ群:1025629106,或关注微信公众号:i信息学奥赛,获取更多学习资源。

导航

hpyx

Posted on 2021-07-14 09:34  shnoip  阅读(490)  评论(0编辑  收藏  举报

普及 01

1077 问题 A Hello,World!

1 #include<iostream>
2 using namespace std;
3 int main() {
4   cout<<"Hello, World!";
5   return 0;
6 }
View Code

1078 问题 B 输出第二个整数

1 #include<iostream>
2 using namespace std;
3 int a,b;
4 int main() {
5   cin>>a>>b>>a;
6   cout<<b;
7   return 0;
8 }
View Code

1084 问题 C 字符三角形

 1 #include<iostream>
 2 using namespace std;
 3 char a;
 4 int main() {
 5   cin>>a;
 6   cout<<"  "<<a<<endl;
 7   cout<<" "<<a<<a<<a<<endl;
 8   cout<<a<<a<<a<<a<<a<<endl;
 9   return 0;
10 }
View Code

1085 问题 D 字符菱形

 1 #include<iostream>
 2 using namespace std;
 3 char a;
 4 int main() {
 5   cin>>a;
 6   cout<<"  "<<a<<endl;
 7   cout<<" "<<a<<a<<a<<endl;
 8   cout<<a<<a<<a<<a<<a<<endl;
 9   cout<<" "<<a<<a<<a<<endl;
10   cout<<"  "<<a<<endl;
11   return 0;
12 }
View Code

1098 问题 E 计算(a+b)*c的值

1 #include<iostream>
2 using namespace std;
3 int a,b,c;
4 int main() {
5   cin>>a>>b>>c;
6   cout<<(a+b)*c;
7   return 0;
8 }
View Code

1104 问题 F 温度表达转化

1 #include<iostream>
2 #include<iomanip>
3 using namespace std;
4 double f;
5 int main() {
6   cin>>f;
7   cout<<fixed<<setprecision(5)<<5*(f-32)/9;
8   return 0;
9 }
View Code

1080 问题 G 输出保留3位小数的浮点数

1 #include<iostream>
2 #include<iomanip>
3 using namespace std;
4 float n;
5 int main() {
6   cin>>n;
7   cout<<fixed<<setprecision(3)<<n;
8   return 0;
9 }
View Code

 

普及 02

1117 问题 A 判断数正负

 1 #include<iostream>
 2 using namespace std;
 3 int n;
 4 int main() {
 5   cin>>n;
 6   if (n>0) cout<<"positive";
 7   if (n==0) cout<<"zero";
 8   if (n<0) cout<<"negative";
 9   return 0;
10 }
View Code

1119 问题 B 奇偶数判断

 1 1119 问题 B 奇偶数判断
 2 #include<iostream>
 3 using namespace std;
 4 int n;
 5 int main() {
 6   cin>>n;
 7   if (n%2==1) cout<<"odd";
 8   if (n%2==0) cout<<"even";
 9   return 0;
10 }
View Code

1121 问题 C 整数大小比较

 1 #include<iostream>
 2 using namespace std;
 3 int x,y;
 4 int main() {
 5   cin>>x>>y;
 6   if (x>y) cout<<">";
 7   if (x<y) cout<<"<";
 8   if (x==y) cout<<"=";
 9   return 0;
10 }
View Code

1122 问题 D 判断是否为两位数

1 #include<iostream>
2 using namespace std;
3 int n;
4 int main() {
5   cin>>n;
6   if (n>9 && n<100) cout<<1;
7   else cout<<0;
8   return 0;
9 }
View Code

 

普及 03

1137 问题 A判断闰年

1 #include<iostream>
2 using namespace std;
3 int a;
4 int main() {
5   cin>>a;
6   if (a%400==0 || a%4==0 && a%100!=0) cout<<"Y";
7   else cout<<"N";
8   return 0;
9 }
View Code

1127 问题 B小明赴约会

1 #include<iostream>
2 using namespace std;
3 int d;
4 int main() {
5   cin>>d;
6   if (d==1 || d==3 || d==5) cout<<"NO";
7   else cout<<"YES";
8   return 0;
9 }
View Code

1134 问题 C计算邮资

 1 #include<iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 int w,ans=8;
 5 char jj;
 6 int main() {
 7   cin>>w>>jj;
 8   if (w>1000) {
 9     ans=ans+(w-1000)/500*4;
10     w=w-1000;
11     if (w%500!=0) ans=ans+4;
12   }
13   if (jj=='y') ans+=5;
14   cout<<ans;
15   return 0;
16 }
View Code

1133 问题 D分段函数

 1 #include<iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 double x,y;
 5 int main() {
 6   cin>>x;
 7   if (x<5) y=2.5-x;
 8   else if (x>=10) y=x/2-1.5;
 9        else y=2-1.5*(x-3)*(x-3);
10   cout<<fixed<<setprecision(3)<<y;
11   return 0;
12 }
View Code

 

普及 04

1153 问题 A 与指定数字相同的数的个数

 1 #include<iostream>
 2 using namespace std;
 3 int n,m,t,ans;
 4 int main() {
 5   cin>>n>>m;
 6   for (int i=0;i<n;i++) {
 7     cin>>t;
 8     if (t==m) ans++;
 9   }
10   cout<<ans;
11   return 0;
12 }
View Code

2695 问题 B 平方的尾数为自己的三位数

1 #include<iostream>
2 using namespace std;
3 int main() {
4   for (int i=100;i<=999;i++)
5     if (i*i%1000==i) cout<<i<<' ';
6   return 0;
7 }
View Code

1144 问题 C 均值

 1 #include<iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 int n;
 5 double a,ans;
 6 int main() {
 7   cin>>n;
 8   for (int i=0;i<n;i++) cin>>a,ans+=a;
 9   cout<<fixed<<setprecision(4)<<ans/n;
10   return 0;
11 }
View Code

1146 问题 D 最高的分数

 1 #include<iostream>
 2 using namespace std;
 3 int n,ans,a;
 4 int main() {
 5   cin>>n;
 6   cin>>ans;
 7   for (int i=1;i<=n-1;i++) {
 8     cin>>a;
 9     if (a>ans) ans=a;
10   }
11   cout<<ans;
12   return 0;
13 }
View Code

 

普及05

1255 问题 A 商和余数的最大值

 1 #include<iostream>
 2 using namespace std;
 3 int a,r,ans;
 4 int main() {
 5   for (int i=1000;i<=9999;i++) {
 6     a=i/433;r=i%433;
 7     if (a+r>ans) ans=a+r;
 8   }
 9   cout<<ans;
10   return 0;
11 }
View Code

2396 问题 B 判断质数

 1 #include<iostream>
 2 using namespace std;
 3 int n;
 4 int main() {
 5   cin>>n;
 6   if (n==1) {
 7     cout<<"No";
 8     return 0;
 9   }
10   for (int i=2;i*i<=n;i++)
11     if (n%i==0) {
12       cout<<"No";
13       return 0;
14     }
15   cout<<"Yes";
16   return 0;
17 }
View Code

1335 问题 C 分离整数的各个数位

 1 #include<iostream>
 2 using namespace std;
 3 long long n;
 4 int main() {
 5   cin>>n;
 6   cout<<n%10;
 7   n=n/10;  
 8   while(n>0) {
 9     cout<<','<<n%10;
10     n=n/10;
11   }
12   return 0;
13 }
View Code

3166 问题 D 灌溉农田

 1 #include<iostream>
 2 using namespace std;
 3 int n,k,a,ans=101;
 4 int main() {
 5   cin>>n>>k;
 6   for (int i=0;i<n;i++) {
 7     cin>>a;
 8     if (k%a==0)
 9       if (k/a<ans) ans=k/a;
10   }
11   cout<<ans;
12   return 0;
13 }
View Code

 

普及06

1152 问题 A 整数的个数

 1 #include<iostream>
 2 using namespace std;
 3 int k,t,a1,a5,a10;
 4 int main() {
 5   cin>>k;
 6   for (int i=0;i<k;i++) {
 7     cin>>t;
 8     if (t==1) a1++;
 9     if (t==5) a5++;
10     if (t==10) a10++;
11   }
12   cout<<a1<<endl<<a5<<endl<<a10<<endl;
13   return 0;
14 }
View Code

2480 问题 B 错误的减法

 1 #include<iostream>
 2 using namespace std;
 3 int n,k;
 4 int main() {
 5   cin>>n>>k;
 6   for (int i=0;i<k;i++)
 7     if (n%10>0) n=n-1;
 8     else n=n/10;
 9   cout<<n;
10   return 0;
11 }
View Code

2515 问题 C 倒三角形

 1 #include<iostream>
 2 using namespace std;
 3 int n;
 4 char c;
 5 int main() {
 6   cin>>n>>c;
 7   while(n>0) {
 8     for (int i=1;i<=n;i++) cout<<c;
 9     cout<<endl;
10     n=n-1;
11   }
12   return 0;
13 }
View Code

1248 问题 D 求和2

 1 #include<iostream>
 2 using namespace std;
 3 int n,sum,ans;
 4 int main() {
 5   cin>>n;
 6   for (int i=1;i<=n;i++) {
 7     sum=sum+i;
 8     ans=ans+sum;
 9   }
10   cout<<ans;
11   return 0;
12 }
View Code

 

普及07

1198 问题 A 数组逆序重放

1 #include<iostream>
2 using namespace std;
3 int n,s[105];
4 int main() {
5   cin>>n;
6   for (int i=0;i<n;i++) cin>>s[i];
7   for (int i=n-1;i>=0;i--) cout<<s[i]<<' ';
8   return 0;
9 }
View Code

3165 问题 B 军衔

 1 #include<iostream>
 2 using namespace std;
 3 int n,d[105],a,b,ans;
 4 int main() {
 5   cin>>n;
 6   for (int i=1;i<=n-1;i++) cin>>d[i];
 7   cin>>a>>b;
 8   for (int i=a;i<=b-1;i++) ans=ans+d[i];
 9   cout<<ans;
10   return 0;
11 }
View Code

1197 问题 C 计算书费

 1 #include<iostream>
 2 #include<iomanip>
 3 using namespace std;
 4 double ans,dj[10]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};
 5 int sl;
 6 int main() {
 7   for (int i=0;i<10;i++)
 8     cin>>sl,ans+=sl*dj[i];
 9   cout<<fixed<<setprecision(1)<<ans;
10   return 0;
11 }
View Code

2170 问题 D 转三进制数

 1 #include<iostream>
 2 using namespace std;
 3 int n,t=1;
 4 int main() {
 5   cin>>n;
 6   while(t<=n) t=t*3;
 7   t=t/3;
 8   while(t>0) {
 9     cout<<n/t;
10     n=n%t;
11     t=t/3;
12   }
13   return 0;
14 }
View Code

1195 问题 E 与指定数字相同的数的个数

 1 #include<iostream>
 2 using namespace std;
 3 int n,m,t[101],ans;
 4 int main() {
 5   cin>>n;
 6   for (int i=0;i<n;i++)
 7     cin>>t[i];
 8   cin>>m;
 9   for (int i=0;i<n;i++)
10     if (t[i]==m) ans++;
11   cout<<ans;
12   return 0;
13 }
View Code

 

普及08

问题 A: 质数对

 1 #include<iostream>
 2 using namespace std;
 3 bool zs(int x) {
 4   for (int i=2;i*i<=x;i++)
 5     if (x%i==0) return 0;
 6   return 1;
 7 }
 8 int n;
 9 bool flag=1;
10 int main() {
11   cin>>n;
12   for (int i=3;i<=n-2;i+=2)
13     if (zs(i) && zs(i+2)) flag=0,cout<<i<<' '<<i+2<<endl;
14   if (flag) cout<<"empty";
15   return 0;
16 }
View Code

问题 B: 纯粹素数

 1 #include<iostream>
 2 using namespace std;
 3 bool zs(int x) {
 4   if (x==1) return 0;
 5   for (int i=2;i*i<=x;i++)
 6     if (x%i==0) return 0;
 7   return 1;
 8 }
 9 int main() {
10   for (int i=1001;i<=3000;i+=2)
11     if (zs(i) && zs(i%1000) && zs(i%100) && zs(i%10)) cout<<i<<' ';
12   return 0;
13 }
View Code

2656: 造回文串1

1 #include<iostream>
2 using namespace std;
3 string s;
4 int main() {
5   cin>>s;
6   cout<<s;
7   for (int i=s.size()-2;i>=0;i--) cout<<s[i];
8   return 0;
9 }
View Code

1299: 大小写字母互换

 1 #include<iostream>
 2 using namespace std;
 3 string s;
 4 int main() {
 5   getline(cin,s);
 6   for (int i=0;i<s.size();i++)
 7     if (s[i]>='A' && s[i]<='Z') cout<<char (s[i]+32);
 8     else if (s[i]>='a' && s[i]<='z') cout<<char (s[i]-32);
 9          else cout<<s[i];
10   return 0;
11 }
View Code

1293: 字符替换

 1 #include<iostream>
 2 using namespace std;
 3 string s;
 4 char y,t;
 5 int main() {
 6   cin>>s>>y>>t;
 7   for (int i=0;i<s.size();i++)
 8     if (s[i]==y) cout<<t;
 9     else cout<<s[i];
10   return 0;
11 }
View Code

 

普及09

1582: 数字方格

 1 #include<iostream>
 2 using namespace std;
 3 int n,ans;
 4 int main() {
 5   cin>>n;
 6   for (int a1=0;a1<=n;a1++)
 7   for (int a2=0;a2<=n;a2++)
 8   for (int a3=0;a3<=n;a3++)
 9     if ((a1+a2)%2==0 && (a2+a3)%3==0 && (a1+a2+a3)%5==0 && a1+a2+a3>ans) ans=a1+a2+a3;
10   cout<<ans;
11   return 0;
12 }
View Code

1583: 鸡兔同笼

1 #include<iostream>
2 using namespace std;
3 int a;
4 int main() {
5   cin>>a;
6   if (a%2!=0) cout<<0<<' '<<0;
7   else cout<<a/4+a%4/2<<' '<<a/2;
8   return 0;
9 }
View Code

1585: 完美立方

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 int n,t,d;
 5 int main() {
 6   cin>>n;
 7   for (int a=5;a<=n;a++)
 8   for (int b=2;b<=a-1;b++)
 9   for (int c=b;c<=a-1 && b*b*b+c*c*c<a*a*a;c++) {
10       t=a*a*a-b*b*b-c*c*c;
11       d=int (pow(t,1.0/3)+0.5);
12       if (c<=d && d*d*d==t) cout<<"Cube = "<<a<<", Triple = ("<<b<<','<<c<<','<<d<<')'<<endl;
13   }
14   return 0;
15 }
View Code

1588: 确定进制

 1 #include <iostream>
 2 using namespace std;
 3 long long conv(int n,int b) {
 4   long long s=0,bb=1;
 5   while (n) {
 6     if (n%10>=b) return -1;  //b进制数中不能出现大于b的数字
 7     s+=n%10*bb;
 8     n/=10;
 9     bb*=b;
10   }
11   return s;
12 }
13 int main() {
14   int p,q,r,ans=0;
15   cin>>p>>q>>r;
16   for (int b=2;b<=16;++b) {
17     long long x,y,z;
18     x=conv(p,b),y=conv(q,b),z=conv(r,b);
19     if (x>=0 && y>=0 && z>=0 && x*y==z) {
20       ans=b;
21       break;
22     }
23   }
24   cout<<ans<<endl;
25   return 0;
26 }
View Code

 

普及11

1769: 矩阵上的文明

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int r,c,n;
 4 char a[110][110],b[110][110];
 5 char judge(int x,int y) {
 6   if (b[x][y]=='R')
 7     if (b[x-1][y]=='P' || b[x][y-1]=='P' || b[x+1][y]=='P' || b[x][y+1]=='P') return 'P';
 8   if (b[x][y]=='S')
 9     if (b[x-1][y]=='R' || b[x][y-1]=='R' || b[x+1][y]=='R' || b[x][y+1]=='R') return 'R';
10   if (b[x][y]=='P')
11     if (b[x-1][y]=='S' || b[x][y-1]=='S' || b[x+1][y]=='S' || b[x][y+1]=='S') return 'S';
12   return b[x][y];
13 }
14 int main() {
15   cin>>r>>c>>n;
16   for (int i=1;i<=r;i++)
17     for (int j=1;j<=c;j++)
18       cin>>a[i][j];
19   for (int i=0;i<n;i++) {
20     memcpy(b,a,sizeof(a));
21     for (int j=1;j<=r;j++)
22     for (int k=1;k<=c;k++)
23       a[j][k]=judge(j,k);
24   }
25   for (int i=1;i<=r;i++) {
26     for (int j=1;j<=c;j++)
27       cout<<a[i][j];
28     cout<<endl;
29   }
30   return 0;
31 }
View Code

1074: ABC扑克牌游戏

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 string a,b,c;
 4 int za,zb,zc;
 5 char ch;
 6 int main() {
 7   cin>>a>>b>>c;
 8   ch=a[za++];
 9   while (1) {
10     if (ch=='a') {
11       if (za==a.size()) break;
12       ch=a[za++];
13     }
14     if (ch=='b') {
15       if (zb==b.size()) break;
16       ch=b[zb++];
17     }
18     if (ch=='c') {
19       if (zc==c.size()) break;
20       ch=c[zc++];
21     }
22   }
23   cout<<(char)(ch-32);
24   return 0;
25 }
View Code

1623: 神奇的幻方
题目描述有误,n<=39

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,a[40][40],x,y;
 4 int main() {
 5   cin>>n;
 6   x=1;y=n/2+1;
 7   a[x][y]=1;
 8   for (int i=2;i<=n*n;++i) {
 9     if (x==1 && y!=n) x=n,y=y+1;
10     else if (x!=1 && y==n) x=x-1,y=1;
11          else if (x==1 && y==n) x=x+1;
12               else {
13                 if (a[x-1][y+1]==0) x=x-1,y=y+1;
14                 else x=x+1;
15               }
16     a[x][y]=i;
17   }
18 
19   for (int i=1;i<=n;++i) {
20     for (int j=1;j<n;++j) cout<<a[i][j]<<" ";
21     cout<<a[i][n]<<endl;
22   }
23   return 0;
24 }
View Code