




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1047:语法百题亲密数
时间限制:1Sec内存限制:128MB
题目描述
两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于
B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密
数。求n以内的全部亲密数。
输入
一个整数n
输出
n以内的全部亲密数(输出格式:(A,B),不加换行,不加分隔符号)一对亲密数只输出一
次,小的在前
样例输入
1000
样例输出
(220,284)
提示
按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,
再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因
子的算法:
用a依次对i(i=l~a/2)进行模运算,若模运算结果等于0,贝如为a的一个因子;否则i就不
是a的因子。
#include<iostream>
usingnamespacestd;
intyzh(intn)
(
inti,s=0;
for(i=l;i<n;i++)
if(n%i==0)
s+=i;
returns;
)
intmain()
(
intj,n,i;
cin>>n;
for(i=l;i<=n;i++)
if(yzh(i)<=n&&yzh(i)>i&&yzh(yzh(i))==i)
cout«zrCz«i«z/,Z,«yzh(i)«z,)z/;
)
1048:语法百题最简真分数序列
时间限制:1Sec内存限制:128MB
题目描述
按递增顺序依次列出所有分母为40,分子小于40的最简分数。
输出
分数之间用逗号分开(含最末逗号)
样例输出
1/40,3/40,7/40,9/40,11/40,13/40,17/40,19/40,21/40,23/40,27/40,29/40,31/40,33/40
,37/40,39/40,
提示
对分子采用穷举法,利用最大公约数的方法,判断分子与40是否构成真分数。
#include<iostream>
usingnamespacestd;
boolhz(inta,intb)
(
boolf=true;
inti;
for(i=2;i<=a;i++)
if(a%i==0&&b%i==0)
f=false;
returnf;
)
intmain()
(
inti;
for(i=l;i<=40;i++)
if(hz(i,40)==true)
cout<<i«z//40,,z;
return0;
1057:语法百题哥德巴赫猜想
时间限制:1Sec内存限制:128MB
题目描述
德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的
和。但有些偶数可以分解成多种素数对的和,如:10=3+7,10=5+5,即10可以分解成两
种不同的素数对
输入
输入任意的>6的正偶数(<32767)
输出
试求给出的偶数可以分解成多少种不同的素数对(注:A+B与B+A认为是相同素数对)
样例输入
1234
样例输出
25
#include<iostream>
#include<math.h>
usingnamespacestd;
boolzs(intnum)
(
floata=sqrt(num);
if(num==l)
returnfalse;
for(inti=2;i<=a;i++)
(
if(num%i==0)
returnfalse;
)
returntrue;
)
intmain()
(
inti,num,sum=0;
cin»num;
for(i=2;i<=num/2;i++)
if(zs(i)&&zs(num-i))
sum++;
cout<<sum<<endl;
1058:语法百题求函数值
时间限制:1Sec内存限制:128MB
题目描述
按如下递归公式求函数值。
x=l时f(x)=10;x>l时f(x)=f(x-l)+2
输入
整型变量x
输出
f(x)
样例输入
10
样例输出
28
#include<cstdio>
intmainO
intn;
scanf("%d",&n);
printf10+(nT)*2);
return0;
)
#include<iostream>
Sinclude<stdio.h>
usingnamespacestd;
intf(intx)
(
if(x==l)return10;
elsereturnf(x-l)+2;
)
intmainO
(
inta,o;
cin»a;
o=f(a);
printfo);
“system("pause");
return0;
)
1062:语法百题自守数问题
时间限制:1Sec内存限制:128MB
题目描述
自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25A2=625
76A2=57769376八2=87909376请求出200000以内的自守数?
输出
200000以内的自守数(包括0,数之间用两个空格分开)
提示
若采用“求出一个数的平方后再截取最后相应位数”的方法显然是不可取的,因为计算
机无法表示过大的整数。分析手工方式下整数平方(乘法)的计算过程,以376为例:
376被乘数
X376乘数
2256第一个部分积=被乘数*乘数的倒数第一位
2632第二个部分积=被乘数*乘数的倒数第二位
1128第三个部分积=被乘数*乘数的倒数第三位
141376积
本问题所关心的是积的最后三位。分析产生积的后三位的过程,可以看出,在每一次的
部分积中,并不是它的每一位都会对积的后三位产生影响。总结规律可以得到:在三位数
乘法中,对积的后三位产生影响的部分积分别为:第一个部分积中:被乘数最后三位*乘
数的倒数第一位第二个部分积中:被乘数最后二位*乘数的倒数第二位第三个部分积中:
被乘数最后一位*乘数的倒数第三位将以上.的部分积的后三位求和后截取后三位就是三位
数乘积的后三位。这样的规律可以推广到同样问题的不同位数乘积。按照手工计算的过程
可以设计算法编写程序。
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<stack>
usingnamespacestd;
intwei(intx){
longlongw=l;
while(x>0){
x/=10;
w*=10;
)
returnw;
)
intmain(){
longlongi;
boolflag=false;
for(i=0;i<=200000;i++){
longlonga=i*i;
if(a%wei(i)==i){
if(flag){
cout«,/〃<<i;
}else{
cout«i;
)
}
flag=true;
)
return0;
)
1064:语法百题角谷猜想
时间限制:1Sec内存限制:128MB
题目描述
角谷猜想:日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为
力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数
则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必
然为1。请编程验证。
输入
任一正整数
输出
演算的过程
样例输入
10
样例输出
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
^include<iostream>
usingnamespacestd;
voidodd(int&n)
(
intd=n;
n=n*3+l;
cout«d<<//*3+l=w«n«endl;
)
voideven(int&n)
(
intd=n;
n/=2;
cout«d«/,/2=w«n«endl;
)
intmainO
(
intn;
cin>>n;
while(n!=l)
(
if(n%2==0)even(n);
elseif(n%2==l)odd(n);
)
}
1070:语法百题密码
时间限制:1Sec内存限制:128MB
题目描述
网上流传一句话:"常在网上飘啊,哪能不挨刀啊〜”。其实要想能安安心心地上网其实
也不难,学点安全知识就可以。首先,我们就要设置一个安全的密码。那什么样的密码才
叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:
给你一个密码,你的任务就是判断它是不是一个安全的密码。
输入
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为
50),密码仅包括上面的四类字符。
输出
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输
出NO。
样例输入
3
alb2c3d4
Linle@ACM
KA矿@!%
样例输出
NO
YES
NO
#include<iomanip>
#include<iostream>
#include<cstring>
usingnamespacestd;
chars[1001];
intlen;
booljudgea(charx)
(
if(x<='Z'&&x>='A')returntrue;
returnfalse;
)
booljudgeb(charx)
{,,,,
if(x<=,z&&x>=,a?)returntrue;
returnfalse;
)
booljudgec(charx)
{.•
if(x<=,9?&&x>=,0,)returntrue;
returnfalse;
)~
booljudged(charx)〃~,;
(
if(x=='~'||x='!'||x='@'||x='#'"x='$‘||x='%'||x='")returntrue;
returnfalse;
)
intmain()
(
intans;
cin»ans;
while(cin»s)
(
inti,j,a=0,b=0,c=0,d=0,flag=l,total=0;
len=strlen(s);
if(len<8||len>16)flag=0;
else
{
for(i=0;i<=len-l;i++)
(
if(judgea(s[i]))a++;
if(judgeb(s[i]))b++;
if(judgec(s[i]))c++;
if(judged(s[i]))d++;
)
if(a>0)total++;
if(b>0)total++;
if(c>0)total++;
if(d>0)total++;
if(total<3)flag=0;
)
if(flag==0)cout«/zN0,z;
elsecout«,,YES/,;
cout<<endl;
)
)
1071:语法百题数组的距离
时间限制:1Sec内存限制:128MB
题目描述
已知元素从小到大排列的两个数组和g[],请写出一个程序算出两个数组彼此之间
差的绝对值中最小的一个,这叫做数组的距离
输入
第一行为两个整数m,n(l<m,n<1000),分别代表数组f[],g口的长度。第二行有m个元
素,为数组田。第三行有n个元素,为数组g[]。
输出
数组的最短距离
样例输入
55
12345
678910
样例输出
1
#include<iostream>
#include<cmath>
#include<cstring>
#include<iomanip>
usingnamespacestd;
intmin(intx,inty)
(
if(x>=y)returny;
elsereturnx;
}
intmainO
(
inth,m,n,i,j;
intf[1001],g[1001];
for(i=0;i<=1000;i++)
(
f[i]=0;
g[i]=0;
)
cin»m»n;
for(i=l;i<=m;i++)
cin»f[i];
for(j=l;j<=n;j++)
cin»g[j];
h=abs(f[l]-g[l]);
for(i=l;i〈=m;i++)
(
for(j=l;j<=n;j++)
h=min(h,abs(f[i]-g[j]));
)
cout<<h«endl;
return0;
)
1087:语法百题最多约数问题
时间限制:1Sec内存限制:128MB
题目描述
正整数x的约数是能整除x的正整数。正整数x的约数个数记为div(x)。例如,1,
2,5,10都是正整数10的约数,且div(10)=4。设a和b是2个正整数,agb,找出a和b
之间约数个数最多的数x
输入
输入2个正整数agb,编程计算a和b之间约数个数最多的数。0=<a<=b<=1000000000
输出
程序运行结束时,找到a和b之间约数个数最多的数是x,将div(x)输出
样例输入
136
样例输出
9
#include<iostream>
usingnamespacestd;
constlongMAXP=100000;
longprim[MAXP];
longmaxi,numb,PCOUNT;〃max存放最多约数个数,numb存放约数个数最多的数
voidprimes();〃用筛选法声生质数存于prim数组中
voidsearch(longfrom,longtot,longnum,longlow,longup);
intmain()
(
primes();
long1,u;
cin»1»u;
if((1=1)&&(u==1))
(
maxi=1;
numb=1;
)
else
(
maxi=2;
numb=1;
search(1,1,1,1,u);
}
cout<<maxl«endl;
return0;
)
voidprimes()〃执行完后:prim[]={2,3,5,7,11,13....}
boolget[MAXP+l];
longi;
for(i=2;i<=MAXP;i++)
get[i]=true;
for(i=2;i<=MAXP;i++)
if(get[i])
(
longj=i+i;
while(j<=MAXP)
{
get[j]=false;
j+=i;
)
)
longii,j;
for(ii=2,j=0;ii<=MAXP;ii++)
if(get[ii])prim[++j]=ii;
PCOUNT=j;
)
//区间[low,up]上,tot为当前约数最多个数,num为约数个数最多的数,
//from表示现在是第几个质数。
voidsearch(longfrom,longtot,longnum,longlow,longup)
(
if(num>=1)
if((tot>maxi)||((tot==maxi)&&(num<numb)))
(
maxi=tot;
numb=num;
)
if((low==up)&&(low>num))search(from,tot*2,num*low,1,1);
for(longi=from;i<=PC0UNT;i++)
(
if(prim[i]>up)return;
else
(
longj=prim[i],x=low-1,y=up,n=num,t=tot,m=1;
while(true)
(
m++;
t+=tot;
x/=j;
y/=j;
if(x==y)break;
n*=j;
search(i+l,t,n,x+1,y);
)
m=1<<m;
if(tot<maxi/m)return;
}//endelse
}//endfor
1099:语法百题语言转换
时间限制:1Sec内存限制:128MB
题目描述
计算机的编程语言有很多种,其中有两种常用的语言A和B。A语言和B语言的优
点、缺点一直都是大家所争论的焦点,但它们之间最大的区别无非是在标志符命名上。A
语言标志符的命名规则是:由一个或多个单词构成;第一单词的首字符都是小写字母;接
下来的其它单词都是以大写字母开头:单词之间无其它任何分隔符号。如:
LongAndShor,name,nEERc都是合法的A语言标志符。B语言的标志符规则:只用小写字
母:单词之间用一个下划线"”隔开。tlU:longand_short,a_b_c都是合法的B语言标
志符。不管哪种语言,每个单词都至少有一个字母。
输入
第一行,n,表示以下有n个语言标识符。以下n行,每行是(不超过100个字
符)只含英文字母和下划线的一个标志符。
输出
n行,如果输入行的标志符是A语言标志符,输出对应得B语言标志符:如果输入
行是B语言的标志符,输出对应的A语言的标志符。如果两种语言都不是,则输出
“Error"°
样例输入
3
AbcDefs
long_and
longAnd
样例输出
Error
longAnd
long_and
提示
对于100%的数据:n<=10o
#include<iostream>
#include<cstring>
#include<cstdio>
usingnamespacestd;
boolCheckA(stringstr)
{.
if(!(str[0]>=,a&&str[0]<=,zJ))return0;
for(inti=l;i<=str.length()-1;i++)
if(!((str[i]>=,a*&&str[i]<=,z)||(str[i]>='A'&&str[i]<=,Z?)))return
0;
return1;
)
boolCheckB(stringstr){
if(str[0]==,J||str[str.lengthJ)return0;
for(inti=0;i<=str.length()-1;i++){
if(!((str[i]>=,a*&&str[i]<=,z)||str[i]==,))return0;
if(str[i]==,J&&str[i+l]==,_*)return0;
)
return1;
)
stringToA(stringstr){
stringans=〃〃;boolflag=0;
for(inti=0;i<=str.length()-1;i++){
if(str[i]==,'){flag=l;continue;}
if(flag)ans+=char(str[i]~32);
elseans+=str[i];
flag=0;
)
returnans;
)
stringToB(stringstr){
stringans=〃”;
for(inti=0;i<=str.length()-1;i++){
if(str[i]>=,A*&&str[i]<=,TJ){
ans+=;
ans+=char(str[i]+32);
}elseans+=str[i];
)
returnans;
)
intmain(){
intn;stringstr;
cin>>n;
for(inti=l;i<=n;i++){
cin>>str;
if(CheckA(str))cout<<ToB(str)<<endl;
elseif(CheckB(str))cout«ToA(str)<<endl;
elsecout«,,Error/z<<endl;
)
return0;
)
1083:语法百题剔除相关数
时间限制:1Sec内存限制:128MB
题目描述
一个数与另一个数如果含有相同数字和个数的字符,则称两数相关。现有一堆乱七八
糟的整数,里面可能充满了彼此相关的数,请你用一下手段,自动地将其剔除。
输入
每组数据前有一个N(<1000),表示跟随的整数个数
输出
按从小到大的顺序输出非相关数,若没有非相关数,则输出None
样例输入
213667321343346772
322232232
0
样例输出
23667677
None
#include<iostream>
#include<cstring>
#include<string>
#include<sstream>
#include<cmath>
#include<cstdio>
#include<iomanip>
#include〈algorithm〉
#include<stack>
#include<vector>
#include<queue>
usingnamespacestd;
intn,zx;
stringb[1010];
chara[1010][1010],c[1010][1010];
boole(charx[],chary[]){
inti;
intlen=max(strlen(x),strlen(y));
for(i=0;i<len;i++){
//cout<<,**«*,«x[i]«,,«y[i]«endl;
if(x[i]!=y[i]){
returnfalse;
)
)
returntrue;
)
voidstoc(string&q,char[]){
)
intmain(){
inti,j;
while(cin>>n){
if(n==0){
gotowan;
)
boolhave二false;
for(i=l;i<=n;i++){
cin>>b[i];
)
sort(b,b+n+1);
for(i=l;i<-n;i++){
intq=b[i].size();
//cout<<q«endl;
for(j=0;j<q;j++){
a[i][j]=b[i][j];
c[i][j]=b[i][j];
)
intx=strlen(a[i]);
zx+=x;
sort(a[i],a[i]+x);
)
/*
for(i=l;i<=n;i++){
cout<<a[i]<<endl;
)
*/
for(i=l;i<=n;i++){
boolflag=false;
for(j=l;j<=n;j++){
//cout<<endl;
if(e(a[i],a[j])&&i!=j){
flag=true;
}
)
if(!flag){
have=true;
cout«c[i]«,;
)
)
if(!have){
cout〈〈"None";
}
cout<<endl;
)
wan:
return0;
}
1035:语法百题移动数据
题目描述
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。
输入
输入数据的个数nn个整数移动的位置m
输出
移动后的n个数
样例输入
10
12345678910
2
样例输出
91012345678
提示
n<=20
#include<cstdio>
intmain()
(
intn,m,a[20];
scanf(纯d”,&n);
for(inti=l;i<=n;i++)
scanf;
scanf&m);
for(inti=n-m+l;i<=n;i++)
printf("%d",a[i]);
for(inti=l;i<=n-m;i++)
printf("%d",a[i]);
return0;
}
1036:语法百题神奇的fans
题目描述
传说fans是--个数学天才。在他五岁那年,从一堆数字卡片中选出了4张卡片:5,
7,6,8。这4个数字有什么神秘之处呢?如果把这4张卡片自左往右的排成:5,6,7,
8。你就会发现:原来这4个数字构成了等差数列!当年fans选出了n组卡片,据说都能够
构成等差数列。但是事实真的是这样吗?fans真的有这么神奇吗?n组数据就是fans选出
的n组卡片,请你判断每一组卡片是否能构成等差数列.
输入
第一个数为数据的组数n,表示后面有n行,每行中的第一个数为该组数据的元素个数
m(l<m<100),其后是m个正整数(不会超出int的表示范围)。
输出
如果能够构成等差数列,输出“yes”,否则输出“no”。
样例输入
2
4UC768
817328
样例输出
yes
no
#include<iostream>
#include<stdio.h>
usingnamespacestd;
intmain()
(
intn,x[25],s=l;
cin>>n;
for(inti=l;i<=n;i++)
(
inta[105],t,z,f;
cin»z;
for(inti=l;i<=z;i++)
cin»a[i]:
for(inti=l;i<z;i++)
(
for(intj=i+l;j<=z;j++)
(
if(a[i]>a[j])
(
t=a[i];
a[i]=a[j];
a[j]=t;
)
)
)
for(inti=l;i〈=z;i++)
{
if(i==l)f=a[i+l]-a[i];
if(i==z)
(
x[s]=0;
s++;
break;
}
elseif(f!=a[i+l]-a[i])
{
x[s]=l;
s++;
break;
}
}
)
for(inti=l;i<=n;i++)
if(x[i]==O)
cout<<z,yeszz<<endl;
else
cout<〈"no〃<〈endl;
)〃〃
//system(zzpause,z);
return0;
)
程序2:
#include<iostream>
#include<cstring>
#include<cmath>
#include<iostream>
#include<cstring>
#inc1ude<algorithm>
usingnamespacestd;
intmain()
(
intn,m,a[100],x[1000],i;
cin>>n;
for(i=0;i<n;i++)
(
cin»m;
for(intj=0;j<m;j++)cin»a[j];
sort(a,a+m);
for(intf=0;f<m-2;f++)
if(a[f+l]-a[f]!=a[f+2]-a[f+l])x[i]=l;
if(x[i]==l)cout<<z,noz/«endl;
elsecout«?zyes,,<<endl;
)
return0;
)
1038:语法百题成绩统计
时间限制:1Sec内存限制:128MB
题目描述
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生
的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3
门课成绩)
输入
学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出
各门课的平均成绩最高分的学生的数据(包括学号、姓名、3门课成绩)平均分为整
数
样例输入
2
1blue908070
bclan807060
样例输出
857565
1blue908070
提示
n<=20
#include<iostream>
usingnamespacestd;
intmain()
(
stringa[100],max2;
intn,c[100],d[100],e[100],f[100],i,g[100],max0=-
1000,o=0,h[100],p=0,q=0;
intmax3,max4,max5;
charb[100],maxi;
cin>>n;
for(i=0;i<n;i++)
(
cin>>b[i]»a[i]>>c[i]»d[i]»e[i];
o+=c[i];
p+=d[i];
q+=e[i];
g[i]=c[i]+d[i]+e[i];
if(g[i]>max0)
{max0=g[i];maxl=b[i];max2=a[i];max3=c[i];max4=d[i];max5=e[i];}
)
h[0]=o/n;
h[l]=p/n;
h[2]=q/n;
for(i=0;i<3;i++)
cout<<h[i]<<,zz/;
cout«endl;
cout<<maxl<<z/,,<<max2<</,,,<<max3«/,,,<<max4<<,/,,«max5«,/
return0;
)
1041:语法百题逆序输出
时间限制:1Sec内存限制:128MB
题目描述
输入10个数字,然后逆序输出。
输入
十个整数
输出
逆序输出,空格分开
样例输入
1234567890
样例输出
0987654321
#include<iostream>
usingnamespacestd;
intmain()
(
inta[ll];
for(inti=l;i<=10;i++)cin»a[i];
for(inti=10;i>=l;i-)cout<<a[i]<<z,
)
1043:语法百题排序
时间限制:1Sec内存限制:128MB
题目描述
对10个整数从小到大排序。
输入
10个整数
输出
排序好的10个整数
样例输入
4853234453453451223012
样例输出
3
4
12
30
45
85
122
234
345
#include<iostream>
#include<stdio.h>
usingnamespacestd;
intmain()
(
inti,j,temp,n,a[12]={0};
n=10;
for(i=0;i<n;i++)cin»a[i];
for(i=0;i<n-l;i++)
for(j=i+l;j<n;j++)
if(a[i]>a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for(j=0;j<n;j++)cout«a[j]«endl;
return0;
)
1045:语法百题插入数字
时间限制:1Sec内存限制:128MB
题目描述
已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数
组中。
输入
第一行,原始数列。第二行,需要插入的数字。
输出
排序后的数列
样例输入
1781723245962101
50
样例输出
1
7
8
17
23
24
50
59
62
101
#include<iostream>
usingnamespacestd;
intmain()
(
inta[1000],n,i,j,t,min,k;
boolflag;
n=10;
for(i=l;i<=n;i++)cin»a[i];
for(i=2;i<=n;i++)
(
k=a[i];
while(a[j]>k&&j>=l)
a[j+l]=a[j];
j-:
}
a[j+l]=k;
}
for(i=l;i<=n;i++)cout«a[i]«*
cout«endl;
return0;
)
1053:语法百题斐波纳契数列
时间限制:1Sec内存限制:128MB
题目描述
斐波纳契数列1,1,2,3,5,8,13,21,34,55,89……这个数列则称为“斐波纳
契数列”,其中每个数字都是“斐波纳契数”。
输入
一个整数N(N不能大于40)
输出
由N个“斐波纳契数”组成的“斐波纳契数列”。
样例输入
6
样例输出
112358
#include<iostream>
usingnamespacestd;
intmain()
(
inta[100011,n,i;
cin»n;
a[l]=l;
a⑵=1;
for(i=3;i<=n;i++)
(
a[i]=a[i-l]+a[i-2];
)
for(i=l;i<=n;i++)
(
cout<<a[i]«";
)
return0;
)
1059:语法百题求车速
时间限制:1Sec内存限制:128MB
题目描述
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即
这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个
新的对称数。新的对称数是多少?
输入
输出
样例输入
样例输出
95959
提示
根据题意,设所求对称数为i,其初值为95859,对其依次递增取值,将i值的每一位
分解后与其对称位置上的数进行比较,若每个对称位置上的数皆相等,则可判定i即为所
求的对称数。
ftinclude<iostream>
#include<stdio.h>
usingnamespacestd;
intmainO
intt,a[5];
longintk,i;
for(i=95860;;i++)
for(t=0,k=100000;k>=10;t++)
a[t]=(i%k)/(k/10);
k/=10;
if((a[0]==a[4])&&(a[l]==a[3]))
printf(z/%d%d%d%d%d”,a[0],a[l],a[2],a[3],a[4]);
printf("”,(i-95859)/2.0);
return0;
1060:语法百题进制转换
时间限制:1Sec内存限制:128MB
题目描述
一个十进制数n(n<=200000000)转换成二进制数,例如输入10,输出1010.
输入
一个整数n
输出
二进制数
样例输入
10
样例输出
1010
#include<cstdio>
inta[32];
intmain()
(
intn;
boolflag=0;
scanf("%M,&n);
for(inti=31;n;i一)
(
a[i]=n%2;
n/=2;
)
for(inti=0;i<32;i++)
(
if(a[i])
flag=l;
if(flag)
printfa[i]);
)
return0;
)
1069:语法百题筛法求素数
时间限制:1Sec内存限制:128MB
题目描述
用筛法求之N内的素数。n<=150
输入
N
输出
0-N的素数
样例输入
100
样例输出
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
#include<iostream>
usingnamespacestd;
intmain()
(
inta,i,j,k;
cin>>a;
if(a>l)
(
cout«,z2〃;
for(i=3;i<=a;i++)
(
for(j=2;j<i;j++)
(
if(j==i-l)cout«i<</z
if(i%j=O)break;
)
)
)〃〃
“system("pause");
return0;
)
#include<iostream>
#include<iomanip>
#include<cmath>
usingnamespacestd;
intmain()
(
intal[100000]={0};
inti,j,t,t2,n;
cin>>n;
for(i=2;i<=sqrt(n);i++)
if(al[i]==0)
t2=n/i;
for(j=2;j<=t2;j++)al[i*j]=l;
}
t=0;
for(i=2;i<=n;i++)
if(al[i]==0)
(
cout<<i<<endl;t++;
)
cout<<endl;
“system("pause");
return0;
)
1072:语法百题母牛生小牛
时间限制:1Sec内存限制:128MB
题目描述
设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母
牛?
输入
输入一个整数N。(l<N<50)
输出
第N年时母牛的数量
样例输入
5
样例输出
3
#include<iostream>
usingnamespacestd;
intmain()
(
inta[1000]={0},n,i=l,j,k;
cin>>n;
for(j=l;j<=n;j++)
for(k=l;k<=i;k++)
(
a[k]++;
if(a[k]>=4)++i;
)
cout<<i;
“system("pause");
return0;
)
#include<iostream>
usingnamespacestd;
intmain()
inta[60],i,n,s=0;
cin>>n;
a[l]=l;a[2]=l;a[3]=l;a[4]=2;a[5]=3;
for(i=6;i<=n;i++)
a[i]=a[i-l]+a[i-3];
}
cout«a[n]«endl;
return0;
1073:语法百题矩阵转换
时间限制:1Sec内存限制:128MB
题目描述
写一个函数,使给定的一个二维数组(3X3)转置,即行列互换。
输入
一个3x3的矩阵
输出
转置后的矩阵
样例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人支出月度计划表
- 大健康产业创新发展模式研究与实践
- 钢平台安全施工方案
- 跨部门协作事务处理指南与文书流程
- 汽车后市场智能化服务解决方案
- 三农村电子商务发展模式研究方案
- 初级母婴护理师考试复习测试卷
- 妇产科护理练习试题及答案(一)
- 法律实务案例解析知识题
- 城市绿化与生态保护方案
- 基于单片机的电子广告牌设计
- 应用PDCA管理工具提高病案归档率
- 果蔬自发气调包装原理与应用演示文稿
- DB43T 2428-2022 水利工程管理与保护范围划定技术规范
- SB/T 11016-2013足部保健按摩服务规范
- GB/T 4062-2013三氧化二锑
- 神经系统的结构与神经调节的基本方式 【知识精讲+高效备课】 高考生物一轮复习 (新教材)
- GB/T 15328-2019普通V带疲劳试验方法无扭矩法
- 马克思主义基本原理(完整版)
- 涉密人员脱密期管理制度
- 企业风险管理-战略与绩效整合(中文版)
评论
0/150
提交评论