概述
一、水仙花数(初级)1131
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
#include<iostream>
using namespace std;
int main()
{
int m,n,i,a,b,c,g=0;
while(cin>>m>>n)
{
for(i=m;i<=n;i++)
{
a=i/100;
b=(i/10)%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
{
cout<<i<<" ";
g=1;
}
}
if(g==0)
cout<<"no"<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int m,n,i,a,b,c,g=0;
while(cin>>m>>n)
{
for(i=m;i<=n;i++)
{
a=i/100;
b=(i/10)%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
{
cout<<i<<" ";
g=1;
}
}
if(g==0)
cout<<"no"<<endl;
}
return 0;
}
二、因子之和1132
数论中有这样一个数,这个数恰好等于它的因子之和。称为“完数”。现在要求输出所有在m和n范围内的完数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(1<=m<=n<=9999)
Output
对于每个测试实例,要求输出所有在给定范围内的完数,就是说,输出的完数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在完数,则输出no;
每个测试实例的输出占一行。
Sample Input
1 100
100 200
Sample Output
6 28
no
#include<iostream>
using namespace std;
int main()
{
int m,n,flag=0;
while(cin>>m>>n)
{
for(int i=m;i<=n;i++)
{
int sum=0;
for(int k=1;k<i;k++)
{
if(i%k==0)
{
sum=sum+k;
}
}
if(i==sum)
{
flag=1;
cout<<sum<<" ";
}
}
if(flag==0)
{
cout<<"no";
}
cout<<endl;
}
return 0;
}
三、数字求和1135
从键盘任意输入一个4位数n,编程计算n的每一位数字相加之和(忽略整数前的正负号)。
Input
有多个测试用例,每行一个4位数。
Output
对应输入的每个用例,输出数字位数之和。
Sample Input
1234
-5678
Sample Output
10
26
#include<iostream>
using namespace std;
int main()
{
int n;
int sum=0;
while(cin>>n)
{
sum=n%10+(n/10)%10+(n/100)%10+(n/1000)%10;
if(n<0)
sum=-sum;
cout<<sum<<endl;
}
return 0;
}
四、爱因斯坦的数学题1136
爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。请你写程序帮助爱因斯坦大师计算一下这条楼梯至少有多少阶。
Input
输入一个不等于0的正整数,当等于0时结束。
注意:该数字与运算结果无关。
Output
输出楼梯至少有的台阶数。
Sample Input
10
0
Sample Output
119
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,c,d,e,n,i,x;
while(cin>>n&&n)
{
for(x=1;;x++)
{
a=x%2;
b=x%3;
c=x%5;
d=x%6;
e=x%7;
if((a==1)&&(b==2)&&(c==4)&&(d==5)&&(e==0))
{
cout<<x<<endl;
break;
}
}
}
//system("pause");
return 0;
}
五、固定位数的制数转换1142
在计算机导论中,我们学习了手工计算数制之间的转换。现在需要您编制一个程序,将任一正整数转换为 16 位二进制形式。
Input
由键盘输入至少一组测试数据,每组测试数据包括一个正整数n(1<=n<=65535),当遇到0时结束并不做处理。
Output
输出正整数n所对应的 16 位二进制数。
Sample Input
144
100
0
Sample Output
0000000010010000
0000000001100100
#include<iostream>
using namespace std;
int main()
{
int n,i,j;
while(cin>>n&&n)
{
bool a[1000]={0,};
i=n;
j=0;
while(i)
{
a[j]=i%2;
i/=2;
j++;
}
for(i=15;i>=0;i--)
cout<<a[i];
cout<<endl;
}
//system("pause");
return 0;
}
六、数字游戏1143
对于任意小于2的32次幂的自然数,你能编写一个程序,各位数字经过重新组合,生成一个新的自然数,使得该自然数的最大吗?例如,输入 1593 ,则输出为 9531 。
Input
由键盘输入至少一组测试数据,每组测试数据均包括一个自然数 n(n<=2^32),当遇到0时结束并不做处理。
Output
输出每组测试数据的各位数字组成的最大自然数。
Sample Input
40120
123456
654123
2147483646
0
Sample Output
42100
654321
654321
8766444321
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long n;
int a[100],i,j,t;
while(cin>>n,n)
{
int k=0;
while(n!=0)
{
a[k]=n%10;
n=n/10;
//cout<<a[k]<<" ";
k++;
}
for(i=0;i<k;i++)
for(j=0;j<i;j++)
if(a[j]<a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
for(i=0;i<k;i++)
cout<<a[i];
cout<<endl;
}
//system("pause");
return 0;
}
七、轻轻松松背单词1144
现在小明本科马上就要毕业了,他不忙着去找工作,想继续学习,出国深造。所以他要把自己记住的英语单词重新整理一下,看自己已经记住了多少,因此他把单词按字母表的顺序排序,由于太多,太复杂,所以想请您帮忙编写一个程序,实现单词按字母表的顺序排序。你能做到吗?
Input
由键盘输入至少一组测试数据,每组测试数据均包括一个正整数 n 和 n 个字符串,请将n个字符串按从小到大的顺序排列后输出。当输入为0时结束并不做处理。
Output
对每组测试数据,按从小到大的顺序输出 n 个字符串,每个字符串占一行,每组测试用例之间用空行分隔。
Sample Input
4
china
beijing
nanjing
shanghai
3
sport
bed
linux
0
Sample Output
beijing
china
nanjing
shanghai
bed
linux
sport
#include<iostream>
#include<cstring>
using namespace std;
struct test
{
char A[50];
};
int main()
{
int n;
test pp[100];
while(cin>>n)
{
if(n<=0)
{
break;
}
for(int i=0;i<n;i++)
{
cin>>pp[i].A;
}
for(int j=0;j<n;j++)
{
for(int k=0;k<j;k++)
if(strcmp(pp[j].A,pp[k].A)==-1)
{
swap(pp[j],pp[k]);
}
}
for(int m=0;m<n;m++)
{
cout<<pp[m].A<<endl;
}
cout<<endl;
}
return 0;
}
八、插入字符串1146
有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的'