函数+题库数组+题库字符串题库_第1页
函数+题库数组+题库字符串题库_第2页
函数+题库数组+题库字符串题库_第3页
函数+题库数组+题库字符串题库_第4页
函数+题库数组+题库字符串题库_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论