蓝桥杯——2010 吉大计算机研究生机试真题(2017.2.5)
2017-02-05 15:50
501 查看
1. 三角形的边
![](http://img.blog.csdn.net/20170205152306803?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
源代码:
![](http://img.blog.csdn.net/20170205152323959?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. 平方因子
![](http://img.blog.csdn.net/20170205152456413?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
源代码:
![](http://img.blog.csdn.net/20170205152615366?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3. 排列与二进制
![](http://img.blog.csdn.net/20170205152656132?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
分析:正常的顺序应该先求出排列数,再将其转化成二进制数,之后进行末尾连续0的判断,但是要注意其中有几个难点:
①求排列数的结果是否越界,越界之后用数组是否方便?
②转换成二进制也需要存入数组中。
但是根据十进制转换成二进制的商除法就会发现,不断除以2,先出现的就是最后二进制从后往前的数(即除2取余)。故要求二进制末尾的连续0的个数,只要看n(n-1)(n-2)……(n-m+1)最多可以整除几个2即可(利用此方法可以避免可能的数组越界和int型超精度问题)
源代码:
![](http://img.blog.csdn.net/20170205152748430?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4. 怪异的洗牌
![](http://img.blog.csdn.net/20170205154202573?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
源代码:
![](http://img.blog.csdn.net/20170205154419328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3I0OTYzNTIxMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
源代码:
#include <stdio.h> void fun(int a,int b,int c) { int min,mid,max; int t; if(a>b) t=a,a=b,b=t; if(b>c) t=b,b=c,c=t; if(a>b) t=a,a=b,b=t; min=a,mid=b,max=c; printf("%d\n",min+mid-max); } int main() { int a,b,c; while(scanf("%d %d %d",&a,&b,&c)!=EOF) { if(a==0) break; fun(a,b,c); } return 0; }程序截图:
2. 平方因子
源代码:
#include <stdio.h> int main() { int i,n; int flag; while(scanf("%d",&n)!=EOF) { flag=0; if(n==0) break; for(i=2;i<n;i++) { if(n%i==0 && (i*i)%n==0) { flag=1; break; } } if(flag==1) printf("Yes\n"); else printf("No\n"); } return 0; }程序截图:
3. 排列与二进制
分析:正常的顺序应该先求出排列数,再将其转化成二进制数,之后进行末尾连续0的判断,但是要注意其中有几个难点:
①求排列数的结果是否越界,越界之后用数组是否方便?
②转换成二进制也需要存入数组中。
但是根据十进制转换成二进制的商除法就会发现,不断除以2,先出现的就是最后二进制从后往前的数(即除2取余)。故要求二进制末尾的连续0的个数,只要看n(n-1)(n-2)……(n-m+1)最多可以整除几个2即可(利用此方法可以避免可能的数组越界和int型超精度问题)
源代码:
#include <stdio.h> int main() { int n,m; int i,t,num; //num记录排列数后面0的个数 while(scanf("%d %d",&n,&m)!=EOF) { num=0; if(n==0) break; for(i=n-m+1;i<=n;i++) // n*(n-1)*(n-2)*...*(n-m+1) { t=i; while(t%2==0) //除2取余得0时,即为排列数后面的0 { num++; t/=2; //除2 } } printf("%d\n",num); } return 0; }程序截图:
4. 怪异的洗牌
源代码:
#include <stdio.h> #define maxn 1000 void Shift(int poker[],int result[],int x,int n) //移位(数组循环移位问题) { int i,j=0; for(i=x;i<n;i++) //将数组第x+1个元素到最后一个元素移到最前面 result[j++]=poker[i]; for(i=0;i<x;i++) //其余元素置后 result[j++]=poker[i]; } void Flip(int result[],int half) //翻转(数组逆置/逆序输出问题) { int i=0,j=half-1; //以下用逆序存储完成 int temp; while(i<j) { temp=result[i]; result[i]=result[j]; result[j]=temp; i++,j--; } } int main() { int i,n,k,x; int t,half; //t-移位/翻转操作次数 half-翻转操作标记 int poker[maxn],result[maxn]={0}; //两数组分别记录操作前和操作后的牌 while(scanf("%d %d",&n,&k)!=EOF) { if(n==0) break; t=0; for(i=0;i<n;i++) //操作前扑克牌赋值 poker[i]=i+1; while(t<k) { scanf("%d",&x); Shift(poker,result,x,n); //移位操作 结果存入result数组 if(n%2==0) //确定翻转操作位置 half=n/2; else half=(n-1)/2; Flip(result,half); //在上述result数组结果基础上翻转 t++; for(i=0;i<n;i++) //将一轮操作结束后的结果赋给poker数组(之前因为忽略此步操作WA了,k>1时将会派上大用场:( ) poker[i]=result[i]; } for(i=0;i<n;i++) //k次操作结束后的结果 printf("%d ",result[i]); printf("\n"); } return 0; }程序截图:
相关文章推荐
- 蓝桥杯——2011 吉大计算机研究生机试真题(节选,2017.2.6)
- 蓝桥杯——2014 HIT计算机研究生机试真题(2017.2.2)
- 蓝桥杯——计算机研究生机试真题改编+情景拓展(2017.2.9)
- 蓝桥杯——计算机研究生机试真题训练(2017.2.12)
- 蓝桥杯——计算机研究生机试真题(2017.2.14)
- 蓝桥杯——计算机研究生机试真题(2017.2.16)
- 蓝桥杯——计算机研究生机试真题(2017.2.17)
- 蓝桥杯——计算机研究生机试真题(2017.3.1)
- 蓝桥杯——计算机研究生机试真题(2017.2.18)
- 蓝桥杯——2015 HIT计算机研究生机试真题(2017.1.29)
- 蓝桥杯——计算机研究生机试真题(2017.2.21)
- 蓝桥杯——2015 西工大计算机研究生机试真题(节选,2017.2.7)
- 蓝桥杯——计算机研究生机试真题(2017.2.20)
- 蓝桥杯——计算机研究生机试真题(2017.2.22)
- 2010 HIT计算机研究生机试真题
- 蓝桥杯——计算机研究生机试真题(2017.2.19)
- 蓝桥杯——计算机研究生机试真题(2017.2.15)
- 蓝桥杯——计算机研究生机试真题(2017.2.28)
- 题目1083:特殊乘法(2010年清华大学计算机研究生机试真题)
- 2010年浙江大学计算机及软件工程研究生机试真题