计算机历年考研复试上机基础题(一)
abc
题目描述
输入描述:
题目没有任何输入。
输出描述:
请输出所有满足题目条件的a、b、c的值。 a、b、c之间用空格隔开。 每个输出占一行。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main(){ 6 for(int i=1;i<=9;i++){ 7 for(int j=1;j<=9;j++){ 8 for(int k=0;k<=9;k++){ 9 int num1=i*100+j*10+k; 10 int num2=j*100+k*10+k; 11 int tmp=num1+num2; 12 if(tmp==532){ 13 cout<<i<<' '<<j<<' '<<k<<endl; 14 } 15 } 16 } 17 } 18 return 0; 19 }
最大公约数
题目描述
输入描述:
测试数据有多组,每组输入两个正整数。
输出描述:
对于每组输入,请输出其最大公约数。
输入
49 14
输出
7
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 //欧几里德算法 两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数 6 int gcd(int x,int y){ 7 if( y==0) 8 return x; 9 return gcd(y,x%y); 10 } 11 12 int main(){ 13 int x,y; 14 while(scanf("%d%d",&x,&y)!=EOF){ 15 int sum=gcd(x,y); 16 cout<<sum<<endl; 17 } 18 }
吃糖果
题目描述
输入描述:
输入只有1行,即整数N。
输出描述:
可能有多组测试数据,对于每组数据, 输出只有1行,即名名吃巧克力的方案数。
输入
4
输出
5 有点斐波那契数列的味道,emmm,比如有5块巧克力,那么,第一天, 要不然吃一块,还剩4个,那么就是4块巧克力吃几天的问题, 要不然吃两块,还剩3块,那么及时3块巧克力吃几天的问题,由题目可知,有1,2,3,4,5块巧克力能吃几天的数量已知,而N的上限不是很大,所以可按照斐波那契数列的思想迭代出来,所有N的情况(1<=N<=19)
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 int a[20]={0}; 5 6 int main(){ 7 int N; 8 a[1]=1,a[2]=2;a[3]=3,a[4]=5; 9 for(int i=5;i<=19;i++){ 10 a[i]=a[i-1]+a[i-2]; 11 } 12 while(scanf("%d",&N)!=EOF){ 13 int tmp=a[N]; 14 cout<<tmp<<endl; 15 } 16 return 0; 17 }
数字求和
题目描述
输入描述:
输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。
输出描述:
可能有多组测试数据,对于每组数据, 输出一行,给出一个正整数,是5个数中小于a的数的和。
输入
10 1 2 3 4 11
输出
10
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 int main(){ 5 int tmp,num,sum=0; 6 std::cout.sync_with_stdio(false); 7 std::cin.sync_with_stdio(false); 8 for(int i=0;i<6;i++){ 9 cin>>num; 10 if(i==0){ 11 tmp=num; 12 }else if(num<tmp){ 13 sum+=num; 14 } 15 } 16 cout<<sum<<endl; 17 }
Fibonacci
题目描述
输入描述:
Each case contains a number n and you are expected to calculate Fn.(0<=n<=30) 。
输出描述:
For each case, print a number Fn on a separate line,which means the nth Fibonacci Number.
输入
1
输出
1
1 #include <bits/stdc++.h> 2 #include <stdio.h> 3 using namespace std; 4 int a[32]={0}; 5 int main(){ 6 a[0]=0,a[1]=1;a[2]=1; 7 for(int i=3;i<=30;i++){ 8 a[i]=a[i-1]+a[i-2]; 9 } 10 int n; 11 cin>>n; 12 cout<<a[n]<<endl; 13 return 0; 14 }
三角形的边
题目描述
输入描述:
每一行包括三个数据a, b, c,并且都是正整数,均小于10000。
输出描述:
对于输入的每一行,在单独一行内输出结果s。s=min(a,b,c)+mid(a,b,c)-max(a,b,c)。上式中,min为最小值,mid为中间值,max为最大值。
输入
1 2 3
输出
0
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main(){ 6 int a[3]={0}; 7 int sum=0; 8 for(int i=0;i<3;i++){ 9 cin>>a[i]; 10 sum+=a[i]; 11 } 12 int mmin=a[0]; 13 int mmax=a[0]; 14 for(int i=1;i<3;i++){ 15 if(mmin>a[i]) 16 mmin=a[i]; 17 if(mmax<a[i]) 18 mmax=a[i]; 19 } 20 int mmid=sum-mmin-mmax; 21 cout<<(mmin+mmid)-mmax<<endl; 22 return 0; 23 }
数字之和
题目描述
输入描述:
每行输入数据包括一个正整数n(0<n<40000)
输出描述:
对于每个输入数据,计算其各位数字之和,以及其平方值的数字之和,输出在一行中,之间用一个空格分隔,但行末不要有空格。
输入
4 12 97 39999
输出
4 7 3 9 16 22 39 36
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main(){ 6 long n,len=0; 7 int a[20]={0}; 8 int b[20]={0}; 9 cin>>n; 10 long num=n*n; 11 while(n){ 12 len++; 13 a[len]=n%10; 14 n=(n-a[len])/10; 15 } 16 int sum1=0; 17 for(int j=1;j<=len;j++){ 18 sum1+=a[j]; 19 } 20 len=0; 21 while(num){ 22 b[len]=num%10; 23 num=(num-b[len])/10; 24 len++; 25 } 26 int sum2=0; 27 for(int j=0;j<=len;j++){ 28 sum2+=b[j]; 29 } 30 cout<<sum1<<' '<<sum2<<endl; 31 return 0; 32 }
求平均年龄
题目描述
输入描述:
第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,取值为15到25。
输出描述:
可能有多组测试数据,对于每组数据, 输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式: printf("%.2f", num);
输入
2 18 17
输出
17.50
1 #include <bits/stdc++.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 using namespace std; 6 7 int main(){ 8 int n; 9 scanf("%d", &n); 10 int num=0; 11 float sum=0; 12 for(int i=1;i<=n;i++){ 13 scanf("%d", &num); 14 sum+=num; 15 } 16 printf("%.2f", (sum/n)); 17 return 0; 18 }
Digital Roots
题目描述
输入描述:
The input file will contain a list of positive integers, one per line. The integer may consist of a large number of digits.
输出描述:
For each integer in the input, output its digital root on a separate line of the output.
输入
24 39
输出
6 3思想就是,例如24 ,2+4=6, 6大于等于10,满足 39 ,3+9=12 大于10, 然后就变成1+2=3, 3满足条件
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 8 using namespace std; 9 int a[12]={0}; 10 11 int fun(int n){ 12 int sum=0,i=0; 13 memset(a,0,sizeof(a)); 14 while(n){ 15 a[i]=n%10; 16 sum+=a[i]; 17 n=(n-a[i])/10; 18 i++; 19 } 20 return sum; 21 } 22 23 int main(){ 24 int n; 25 scanf("%d",&n); 26 int tmp=fun(n); 27 while(tmp>=10) 28 tmp=fun(tmp); 29 printf("%d\n",tmp); 30 return 0; 31 }
百鸡问题
题目描述
输入描述:
测试数据有多组,输入n。
输出描述:
对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
输入
40
输出
x=0,y=0,z=100 x=0,y=1,z=99 x=0,y=2,z=98 x=1,y=0,z=99
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #define maxn 100 8 using namespace std; 9 10 int main(){ 11 int n; 12 scanf("%d",&n); 13 for(int x=0;x<=n/5;x++){ 14 for(int y=0;y<=(n-5*x)/3;y++){ 15 for(int z=0;z<=(n-5*x-3*y)*3;z++){ 16 if(x+y+z==100){ 17 printf("x=%d,y=%d,z=%d\n",x,y,z); 18 } 19 } 20 } 21 } 22 return 0; 23 }
字符串排序
题目描述
输入描述:
一个字符串,其长度n<=20
输出描述:
输入样例可能有多组,对于每组测试样例, 按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果
输入
dcba
输出
abcd 小析:理解字符和ASCII码的输出
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 22 9 using namespace std; 10 11 int a[maxn]={0}; 12 char str[22]; 13 int main(){ 14 scanf("%s",&str); 15 for(int i=0;i<=20;i++){ 16 a[i]=str[i]; 17 } 18 sort(a,a+20); 19 for(int i=0;i<=20;i++){ 20 if(a[i]) 21 printf("%c",a[i]); 22 } 23 return 0; 24 }
xxx定律
题目描述
输入描述:
测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。(1<=n<=10000)
输出描述:
对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。
输入
3 1 0
输出
5 0
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 22 9 using namespace std; 10 11 int a[maxn]={0}; 12 char str[22]; 13 int main(){ 14 int n=0; 15 while(scanf("%d",&n)!=EOF){ 16 int sum=0; 17 if(n==0){ 18 printf("0\n"); 19 return 0; 20 } 21 while(n!=1){ 22 if(n%2==0){ 23 n=n/2; 24 sum++; 25 }else{ 26 n=n*3+1; 27 n=n/2; 28 sum++; 29 } 30 } 31 printf("%d\n",sum); 32 } 33 return 0; 34 }
字符串内排序
题目描述
输入描述:
测试数据有多组,输入字符串。
输出描述:
对于每组输入,输出处理后的结果。
输入
bacd
输出
abcd 小析:和上面那题基本上没什么区别
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 220 9 using namespace std; 10 11 int a[maxn]={0}; 12 char str[220]; 13 int main(){ 14 scanf("%s",&str); 15 for(int i=0;i<=200;i++){ 16 a[i]=str[i]; 17 } 18 sort(a,a+200); 19 for(int i=0;i<=200;i++){ 20 if(a[i]) 21 printf("%c",a[i]); 22 } 23 return 0; 24 }
神奇的口袋
题目描述
输入描述:
输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的值。
输出描述:
输出不同的选择物品的方式的数目。
输入
3 20 20 20
输出
3
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 50 9 using namespace std; 10 11 int a[maxn]={0}; 12 int dp[100][43]; //数组大小 13 14 int main(){ 15 int n=0; 16 scanf("%d",&n); 17 for(int i=1;i<=n;i++){ 18 scanf("%d",&a[i]); 19 dp[i][0]=1; 20 } 21 dp[0][0]=1; 22 for(int i=1;i<=n;i++){ 23 for(int j=1;j<=40;j++){ 24 dp[i][j]=dp[i-1][j]; 25 if(j>=a[i]) 26 dp[i][j]+=dp[i-1][j-a[i]]; 27 //cout<<dp[i][j]<<" "; 28 } 29 // cout<<endl; 30 } 31 cout<<dp[n][40]<<endl; 32 return 0; 33 }
统计同成绩的人数
题目描述
输入描述:
测试输入包含若干测试用例,每个测试用例的格式为第1行:N 第2行:N名学生的成绩,相邻两数字用一个空格间隔。 第3行:给定分数当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。
输出描述:
对每个测试用例,将获得给定分数的学生人数输出。
输入
3 80 60 90 60 2 85 66 0 5 60 75 90 55 75 75 0
输出
1 0 2
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 110 9 using namespace std; 10 11 int a[maxn]={0}; 12 13 int main(){ 14 int n=0; 15 while(scanf("%d",&n)!=EOF){ 16 if(n==0) return 0; 17 int tmp; 18 for(int i=0;i<n;i++){ 19 scanf("%d",&tmp); 20 a[tmp]++; 21 } 22 int key=0; 23 scanf("%d",&key); 24 printf("%d\n",a[key]); 25 } 26 return 0; 27 }
数组逆置
题目描述
输入描述:
测试数据有多组,每组输入一个字符串。
输出描述:
对于每组输入,请输出逆置后的结果。
输入
hdssg
输出
gssdh
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 210 9 using namespace std; 10 11 char a[maxn]={'0'}; 12 13 int main(){ 14 scanf("%s",&a); 15 int len=strlen(a); 16 for(int i=len-1;i>=0;i--){ 17 printf("%c",a[i]); 18 } 19 20 return 0; 21 }
Skew数
题目描述
输入描述:
输入包含一行或多行,每行包含一个整数n。如果 n = 0 表示输入结束,否则n是一个skew数
输出描述:
可能有多组测试数据,对于每一个输入, 输出它的十进制表示。转换成十进制后, n 不超过 231-1 = 2147483647
输入
10120 200000000000000000000000000000 10 1000000000000000000000000000000 11 100 11111000001110000101101102000 0
输出
44 2147483646 3 2147483647 4 7 1041110737
,快速幂,然后按着给定的公式来,数字比较大,以字符形式接收,如a[1]='1',a[1]-'0'=1, 把字符1转换为了数字1,快速幂思想就是把幂二进制化,然后运用&运算取得最后一位二进制位,<<运算,将二进制数右移一位,
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 50 9 using namespace std; 10 11 char a[maxn]={'0'}; 12 long long pow(int a,int b){ 13 long long sum=1; 14 while(b){ 15 if(b&1) 16 sum=sum*a; 17 a*=a; 18 b>>=1; 19 } 20 return sum; 21 } 22 23 int main(){ 24 scanf("%s",&a); 25 int len=strlen(a); 26 int k=len; 27 long long sum=0,tmp=0; 28 for(int i=0;i<len;i++){ 29 tmp=(a[i]-'0')*(pow(2,k)-1); 30 sum+=tmp; 31 k--; 32 } 33 cout<<sum<<endl; 34 return 0; 35 }
放苹果
题目描述
输入描述:
每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
输出描述:
对输入的每组数据M和N,用一行输出相应的K。
输入
复制
7 3
输出
复制
8 苹果和盘子的故事对于两个都可变化数量的物体,要固定其中一个才好分析这里选择固定盘子(因为苹果可以不限制数目的放在盘子里) m个苹果,n个盘子,用递归的方法可以解决递归体 当m>=n时,苹果数量多,盘子数量少,那么 当空出一个盘子后(因为是递归,所以这里的“一”不是真正的一,n-1,n-2,n-3...) fun(m,n)=fun(m,n-1) 不留空盘子,那么,此时花费(m-n)个苹果, fun(m,n)=fun(m-n,n); 当m<n时,苹果数量少,空盘子对结果无增益,所以本题可忽略,那么就转化为在m个盘子里放置m个苹果的故事, fun(m,n)=fun(m,m) 总计为:fun(m,n)=fun(m,n-1)+fun(m-n,n)结束条件 当m==0,时,我们结束递归,return 1; 当n==1,时,只剩下一个盘子啦,就只有一种情况,return 1;
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 50 9 using namespace std; 10 11 char a[maxn]={'0'}; 12 int fun(int m,int n){ 13 if(m==0||n==1) return 1; 14 if(m<n) 15 return fun(m,m); 16 else 17 return fun(m,n-1)+fun(m-n,n); 18 } 19 20 int main(){ 21 int m,n; 22 scanf("%d%d",&m,&n); 23 int ans=fun(m,n); 24 printf("%d\n",ans); 25 return 0; 26 }
Zero-complexity
题目描述
输入描述:
For each case, the first line of the input file contains one integer n-length of the sequence (0 < n ≤ 10 000). The second line contains n integers numbers-a1, a2, …, an (-1 000 000 000 000 000 ≤ ai ≤ 1 000 000 000 000 000).
输出描述:
For each case, on the first line of the output file print the sequence in the reverse order.
输入
5 -3 4 6 -8 9
输出
9 -8 6 4 -3 数组的翻转
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #define maxn 10010 9 using namespace std; 10 11 long long a[maxn]; 12 13 int main(){ 14 int n; 15 scanf("%d",&n); 16 for(int i=0;i<n;i++){ 17 scanf("%d",&a[i]); 18 } 19 for(int i=n-1;i>=0;i--){ 20 printf("%d ",a[i]); 21 } 22 return 0; 23 }
子串计算
题目描述
输入描述:
输入包含多行,每行一个字符串。
输出描述:
对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
输入
10101
输出
0 2 01 2 1 3 10 2 101 2 从左到右找出每一种组合,用map这种的键值对,来对每一种情况进行计数
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include <stdio.h> 2 #include <algorithm> 3 #include <stdlib.h> 4 #include <string> 5 #include <string.h> 6 #include <math.h> 7 #include <iostream> 8 #include <map> 9 #define maxn 10010 10 11 using namespace std; 12 13 map<string,int> m; 14 15 int main(){ 16 string str; 17 cin>>str; 18 int len=str.length(); 19 if(len==1) 20 return 0; 21 for(int i=0;i<len;i++){ 22 for(int j=1;j<=len-i;j++){ 23 string tmp=str.substr(i,j); 24 //cout<<tmp<<endl; 25 m[tmp]++; 26 } 27 //cout<<"********************"<<endl; 28 } 29 map<string,int>::iterator it; 30 it=m.begin(); 31 while(it!=m.end()){ 32 if(it->second>1){ 33 cout<<it->first<<" "<<it->second<<endl; 34 } 35 it++; 36 } 37 38 return 0; 39 }
View Code
转载于:https://www.cnblogs.com/z-712/p/10465559.html
计算机历年考研复试上机基础题(一)相关推荐
- 牛客网 -- 计算机历年考研复试上机题 -- 手机键盘
题目描述 按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在"1"键上,输入a只需要按一次,输入c需要连续按三次. 如果连续两个字符不在同一个按键上,则可直接按,如: ...
- 北航计算机2014复试上机题,北航计算机系考研复试上机真题及答
北航计算机系考研复试上机真题及答 (29页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 Kao400.com 出品 侵权必究 北京航空航 ...
- 北航计算机学院上机试题,北航计算机系考研复试上机真题及答.pdf
北航计算机系考研复试上机真题及答.pdf K 出品 侵权必究 北京航空航天大学计算机系考研 复试 06-12 上机真题及答案 复试上机指导 1. 本真题只是供辅助作用,关键还是研友平时动手能力练 习和 ...
- 计算机专业考研复试上机算法学习
计算机专业考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习,将各道习题链接和代码记录下来,这篇博客权且当个记录. 文章目录 计算机专业考研复试上机算法学习 1.S ...
- 浙大计算机学院考研复试上机试题,浙大计算机学院考研复试上机试题.doc
浙江大学计算机复试上机2005-2007 (由林子整理 QQ:170479150) 2005年浙江大学计算机学院考研复试上机试题及参考答案(1/5) 第一题:A+B(10分) [结题] 题目要求:读入 ...
- 北京航空航天大学计算机系考研复试上机真题及答案---2014
第一题,阶乘数. 输入一个正整数,输出时,先输出这个数本身,跟着一个逗号,再输出这个数的各位数字的阶乘和,等号, 阶乘和的计算结果,并判断阶乘和是否等于原数,如果相等输出Yes,否则输出No.题目说明 ...
- 考研复试C++基础题必会
前言 你可能听过很多种语言,什么,C,C++,JAVA,C#,HTML,CS,JS,GO,RUBY,JAVA,PHP,PYTHON-等等,但是会的却很少,觉得心里很慌,那我必须声明,完全没有这个必要, ...
- 杭电计算机学院复试真题,2020杭州电子科技大学计算机学院考研复试公告
考研复试公告各院校已经发布出来了,下面由出国留学网小编为你精心准备了"2020杭州电子科技大学计算机学院考研复试公告",持续关注本站将可以持续获取更多的考试资讯! 2020杭州电子 ...
- 计算机考研复试上机算法学习
计算机考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习,将各道习题链接和代码记录下来,这篇博客权且当个记录. 文章目录 计算机考研复试上机算法学习 1.STL容器 ...
最新文章
- python软件是免费的吗-谁说程序员不懂浪漫?用Python每天自动给女朋友免费发短信...
- 优化的交换排序(冒泡排序)_C程序实现优化的冒泡排序
- 作者:周大铭,管理科学与工程博士,工业和信息化部赛迪研究院软件所助理研究员。...
- 最经典的Linux入门命令
- 【浙江大学PAT真题练习乙级】1001 害死人不偿命的(3n+1)猜想(15分)真题解析
- 2018国庆雅礼D3T1
- 14.凤凰架构:构建可靠的大型分布式系统 --- 资源与调度
- Linux升级glibc版本汉字乱码,glibc版本升级
- 软件测试cmm等级划分,CMM的五个等级及关键过程域
- SolidWorks-旋转凸台的使用
- c语言cmp函数含义,【C艹】关于sort用法之重构cmp(comp)函数的笔记
- 小清新风格的微信公众号文章排版有这些素材就够了
- java集合框架的练习之斗地主洗牌发牌的模拟(升级版)
- git libpng warning: iCCP: cHRM chunk does not match sRGB
- 快速修复IE浏览器方案
- 均值差异大但是t检验不显著_如何理解均值差异性检验:方差分析?
- 童年往事!怀念44款经典任天堂FC游戏[FC]
- 冯巩台上的经典155条短语 句句经典啊
- Ghost 博客系统终极安装教程,装不上来打我!
- ShareSDK for Android 版本:V 2.5.0发布