2016 HHU新生赛业余组 题解
A题 一句话说三遍
- #include<iostream>
- using namespace std;
- int main()
- {
- cout<<"A man can be destroyed but not defeated."<<endl;
- cout<<"A man can be destroyed but not defeated."<<endl;
- cout<<"A man can be destroyed but not defeated."<<endl;
- return 0;
- }
B题 求2的n次方
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- using namespace std;
- int main()
- {
- int n;
- while(cin>>n)
- {
- cout<<pow(2,n)<<endl;
- }
- return 0;
- }
C题 求阶乘之和
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- using namespace std;
- long long jiecheng(int n)
- {
- int res=1;
- for(int i=1;i<=n;i++)
- {
- res=res*i;
- }
- return res;
- }
- int main()
- {
- int n;
- while(cin>>n)
- {
- long long sum=0;
- for(int i=1;i<=n;i++)
- {
- sum+=jiecheng(i);
- }
- cout<<sum<<endl;
- }
- return 0;
- }
D题 普通排序
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- using namespace std;
- int a[102];
- int main()
- {
- int n;
- cin>>n;
- for(int i=0;i<n;i++)
- {
- cin>>a[i];
- }
- sort(a,a+n);
- for(int i=0;i<n;i++)
- {
- cout<<a[i]<<endl;
- }
- return 0;
- }
E题 闰年问题
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- using namespace std;
- int main()
- {
- int l,r;
- cin>>l>>r;
- for(int i=l;i<=r;i++)
- {
- if(i%4==0&&i%100!=0||i%400==0)
- cout<<i<<endl;
- }
- return 0;
- }
- #include<iostream>
- #include<cstdio>
- using namespace std;
- int main()
- {
- int num;
- int t;
- cin>>t;
- while(t--)
- {
- scanf("%d",&num);
- int cnt=0;
- while(num>=0)
- {
- num=num-3+1;
- if(num>=0)
- cnt++;
- }
- cout<<cnt<<endl;
- }
- return 0;
- }
G题 HHUOJ 1015 圆上的点点点点点点点点点点点点点点(根号优化计算)
- #include<iostream>
- #include<cmath>
- #include<cstdio>
- using namespace std;
- int main()
- {
- long int S;
- int t;
- cin>>t;
- while(t--)
- {
- scanf("%d",&S);
- double s=sqrt(S);
- int num=0;
- for(int i=1;i<s;i++)
- {
- int j=sqrt((S-i*i));
- if(i*i+(j+1)*(j+1)==S)num++;
- if(i*i+(j)*(j)==S)num++;
- if(i*i+(j-1)*(j-1)==S)num++;
- }
- if(s!=int(s))cout<<num*4<<endl;
- else cout<<num*4+4<<endl;
- }
- }
H题 循环
- #include<iostream>
- #include<cmath>
- #include<cstdio>
- using namespace std;
- int main()
- {
- int cnt=0;
- int n;
- cin>>n;
- while(n!=1)
- {
- if(n%2==1)
- {
- n=n*3+1;
- }
- else
- {
- n=n/2;
- }
- cnt++;
- }
- cout<<cnt<<endl;
- return 0;
- }
I题 质数的朴素算法
- #include<iostream>
- #include<cmath>
- #include<cstdio>
- using namespace std;
- int main()
- {
- int l,r;
- cin>>l>>r;
- for(int i=l;i<=r;i++)
- {
- bool flag=true;
- for(int j=2;j<=sqrt(i);j++)
- {
- if(i%j==0)
- {
- flag=false;
- break;
- }
- }
- if(flag==true&&i!=1)
- cout<<i<<endl;
- }
- return 0;
- }
J题 快速排序
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- using namespace std;
- int a[1000000+2];
- int main()
- {
- int n;
- scanf("%d",&n);
- for(int i=0;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- sort(a,a+n);
- for(int i=0;i<n;i++)
- {
- printf("%d\n",a[i]);
- }
- return 0;
- }
K题 数据的预处理
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- using namespace std;
- int a[5000+5];
- int main()
- {
- int t;
- int cnt=0;
- for(int i=1;i<=5000;i++)
- {
- if(i%4==0&&i%100!=0||i%400==0)
- {
- cnt++;
- }
- a[i]=cnt;
- }
- scanf("%d",&t);
- while(t--)
- {
- int l,r;
- scanf("%d%d",&l,&r);
- int num=a[r]-a[l];
- if(l%4==0&&l%100!=0||l%400==0)num++;
- printf("%d\n",num);
- }
- return 0;
- }