当前位置:文档之家› noip信息学奥林匹克竞赛初赛阅读程序题c++版本真题练习

noip信息学奥林匹克竞赛初赛阅读程序题c++版本真题练习

2015年信息学奥赛初赛练习题(一)阅读程序写结果。

(共4题,每题8分)1.#include <iostream>using namespace std;int a,b,c,d,e,ans;int main(){cin>>a>>b>>c;3 d=a+b;7 e=b+c;10 ans=d+e;cout<<ans<<endl;return 0;}输入:1 2 5输出:______________2.#include <iostream>using namespace std;int n,i,ans;int main(){cin>>n;ans=0;for(i=1;i<=n;i++)1 1 1 1 1 1if(n%i==0) ans++;cout<<ans<<endl;return 0;}输入:18输出:_____________3. #include <iostream>using namespace std;int n,i,j,a[100][100];int solve(int x,int y){int u,v;if(x==n) return a[x][y];u=solve(x+1,y);v=solve(x+1,y+1);if(u>v) return a[x][y]+u;else return a[x][y]+v;}int main(){cin>>n;for(i=1;i<=n;i++)for(j=1;j<=i;j++) cin>>a[i][j];cout<<solve(1,1)<<endl;return 0;}输入:52-1 42 -1 -2-1 6 4 03 2 -1 5 8输出:______________4. #include <iostream>#include <string>using namespace std;int n,i,j,ans;string s;char get(int i){if(i<n) return s[i];else return s[i-n];}int main(){cin>>s;n=s.size();ans=0;for(i=1;i<=n-1;i++){for(j=0;j<=n-1;j++)if(get(i+j)<get(ans+j)){ans=i;break;}else if(get(i+j)>get(ans+j)) break;}for(j=0;j<=n-1;j++) cout<<get(ans+j);cout<<endl;return 0;}输入:CBBADADA输出:____________5.#include<iostream>using namespace std;int main(){int i,n,m,ans;cin>>n>>m;i=n;ans=0;while(i<=m){ans+=i;i++;}cout<<ans<<endl;return 0;}输入:10 20输出:_________6.#include<iostream>#include<string>using namespace std;int main(){string map= "2223334445556667778889999";string tel;int i;cin>>tel;for(i=0;i<tel.length();i++)if((tel[i]>='0') && (tel[i]<='9') )cout<<tel[i];else if( (tel[i]>='A') && (tel[i]<='Z'))cout<<map[tel[i]-'A'];cout<<endl;return 0;}输入:CCF-NOIP-2011输出:_______________7.#include<iostream>#include<cstring>using namespace std;const int SIZE = 100;int main(){int n,i,sum,x,a[SIZE];cin>>n;memset(a,0,sizeof(a));for(i=1;i<=n;i++){cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){i++;sum+=a[i];}cout<<i<<endl;return 0;}输入:114 5 6 6 4 3 3 2 3 2 1 输出:8.#include<iostream>using namespace std;int solve(int n,int m){int i,sum;if(m==1) return 1;sum=0;for(i=1;i<n;i++)sum+= solve(i,m-1);return sum;}int main(){int n,m;cin>>n>>m;cout<<solve(n,m)<<endl;return 0;}输入:7 4输出:_________9.#include<iostream>using namespace std;void swap(int &a,int &b){int t;t=a;a=b;b=t;}int main(){int a1,a2,a3,x;cin>>a1>>a2>>a3;if(a1>a2)swap(a1,a2);if(a2>a3)swap(a2,a3);if(a1>a2)swap(a1,a2);cin>>x;if(x<a2)if(x<a1)cout<<x<<' '<<a1<<' '<<a2<<' '<<a3<<endl;elsecout<<a1<<' '<<x<<' '<<a2<<' '<<a3<<endl;elseif(x<a3)cout<<a1<<' '<<a2<<' '<<x<<' '<<a3<<endl;elsecout<<a1<<' '<<a2<<' '<<a3<<' '<<x<<endl;return 0;}输入:91 2 2077输出:10.#include<iostream>using namespace std;int rSum(int j){int sum=0;while(j!=0){sum=sum*10+(j%10);j=j/10;}return sum;}int main(){int n,m,i;cin>>n>>m;for(i=n;i<m;i++)if(i==rSum(i))cout<<i<<' ';return 0;}输入:90 120输出:_______________11.#include<iostream>#include<string>using namespace std;int main(){string s;char m1,m2;int i;getline(cin,s);m1=' ';m2=' ';for(i=0;i<s.length();i++)if(s[i]>m1){m2=m1;m1=s[i];}else if(s[i]>m2)m2=s[i];cout<<int(m1)<<' '<<int(m2)<<endl;return 0;}输入:Expo 2010 Shanghai China输出:______________12.#include<iostream>using namespace std;const int NUM=5;int r(int n){int i;if(n<=NUM)return n;for(i=1;i<=NUM;i++)if(r(n-i)<0)return i;return -1;}int main(){int n;cin>>n;cout<<r(n)<<endl;return 0;}(1)输入:7输出:(4分)(2)输入:16输出:(4分)。

相关主题