目录
1071: 分解质因子
1072: 青蛙爬井
1073: 再谈鸡兔同笼问题
1074: 百钱买百鸡
1075: 聚餐人数统计
1076: 三位数求解
1077: 空心菱形
1078: a+b(多实例测试1)
1079: a+b(多实例测试2)
1080: a+b(多实例测试3)
1071: 分解质因子
题目描述
将一个正整数分解质因数,例如,输入90,输出2 3 3 5。
输入
输入一个正整数n(2<=n<=2000)。
输出
从小到大输出n的所有质因子,每两个数之间空一格。
样例输入 Copy
20
样例输出 Copy
2 2 5
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main(void)
{int n,i;
scanf("%d",&n);{for(i=2;n>1;i++)
while(n%i==0)//不能除就不是因数{n=n/i;printf("%d",i);if(n!=1)printf(" ");}}return 0;
}/**************************************************************Problem: 1071User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:ixIgXEoz4SexTCfJJpvCjVRSf/U
****************************************************************/
1072: 青蛙爬井
题目描述
有一口深度为high米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬up米,夜里则顺井壁向下滑down米,若青蛙从某个早晨开始向外爬,对于任意指定的high、up和down值(均为自然数),计算青蛙多少天能够爬出井口?
输入
输入3个正整数:high、up和down。
输出
输出一个整数,表示天数。输出单独占一行。
样例输入 Copy
10 2 1
样例输出 Copy
9
提示
循环模拟。注意,不能简单地认为每天上升的高度等于白天向上爬的距离减去夜间下滑的距离,因为若白天能爬出井口,则不必等到晚上。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main(void)
{int hight,up,down,day=0;scanf("%d%d%d",&hight, &up, &down);while(hight>0){day++;hight=hight-up;if(hight<=0)break;elsehight=hight+down;}printf("%d",day);return 0;
}/**************************************************************Problem: 1072User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:jxIgUBxj4XSxTCfJJpvCjVRSf/Y
****************************************************************/
1073: 再谈鸡兔同笼问题
题目描述
鸡和兔关在一个笼子里,鸡有2只脚,兔有4只脚。输入笼子里头的总数m和脚的总数n,求鸡和兔子各有多少只?若问题无解,也要输出相应的信息。
输入
输入两个整数m和n,分别代表笼子里头的个数和脚的个数。
输出
若问题有解,依次输出鸡和兔的只数。若问题无解,则输出"No Answer"。
样例输入 Copy
12 40
样例输出 Copy
4 8
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main()
{int m,n,tu=0,ji=0;scanf("%d%d",&m,&n);tu=(n-2*m)/2;ji=m-tu;if(4*tu+2*ji!=n||tu<0||ji<0)printf("No Answer");elseprintf("%d %d",ji,tu);return 0;}/**************************************************************Problem: 1073User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:2RN5Wk065iSxTCfJJpvCjVRSf/c
****************************************************************/
1074: 百钱买百鸡
题目描述
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?
输入
输入一个正整数n(n<=100)。
输出
如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。
样例输入 Copy
100
样例输出 Copy
0 25 754 18 788 11 8112 4 84
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main()
{int n,g,m,x,f=0;scanf("%d",&n);for(g=0;g<=n;g++)for(m=0;m<=n;m++){x=n-g-m;if(15*g+9*m+x==3*n){printf("%4d%4d%4d\n",g,m,x);f=1;}}
if(f!=1)//设定一个标准表示有答案存在printf("No Answer");return 0;}/**************************************************************Problem: 1074User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:ghNyWU82tHOxTCfJJpvCjVRSf/A
****************************************************************/
1075: 聚餐人数统计
题目描述
马克思手稿中有这样一道趣味数学题:男人、女人和小孩总计n个人,在一家饭店里吃饭,共花了cost先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,请用穷举法编程计算男人、女人和小孩各有几个。
输入
输入两个正整数,表示人数n和花费cost。
输出
若问题有解,则输出所有解,每行输出三个数据,代表男人、女人和小孩的人数,用空格分隔;若问题无解,则输出“No answer"。
样例输入 Copy
30 50
样例输出 Copy
0 20 10 1 18 11 2 16 12 3 14 13 4 12 14 5 10 15 6 8 16 7 6 17 8 4 18 9 2 19 10 0 20
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main()
{int r,c,m,n,x,f=0;scanf("%d%d",&r, &c);for(m=0;m<=r;m++)for(n=0;n<=r;n++){x=r-m-n;if(3*m+2*n+x==c){printf("%d %d %d\n",m,n,x);f=1;}}
if(f!=1)//设定一个标准表示有答案存在printf("No answer");return 0;}/**************************************************************Problem: 1075User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:ghNxWxw75S2xTCfJJpvCjVRSf/E
****************************************************************/
1076: 三位数求解
题目描述
已知xyz+yzz=n,其中n是一个正整数,x、y、z都是数字(0-9),编写一个程序求出x、y、z分别代表什么数字。如果无解,则输出“No Answer”
注意:xyz和yzz表示一个三位数,而不是表示x*y*z和y*z*z。
输入
输入一个正整数n。
输出
输出一行,包含x、y、z的值,每个数值占4列。
样例输入 Copy
532
样例输出 Copy
3 2 1
提示
注意一个三位数的百位数字不能为0。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main()
{int n,x,y,z,f=0;scanf("%d",&n);for(x=1;x<=9;x++)for(y=1;y<=9;y++)for(z=0;z<=9;z++){if ((x*100+y*10+z)+(y*100+z*10+z)==n){printf("%4d%4d%4d\n",x,y,z);f=1;}}
if(f!=1)//设定一个标准表示有答案存在printf("No Answer");return 0;}/**************************************************************Problem: 1076User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:jh8kUUhg4XCxTCfJJpvCjVRSf/I
****************************************************************/
1077: 空心菱形
题目描述
输入一个整数n,(1<=n<=20),输出一个空心菱形,其中每个边由n个'*'组成。
输入
输入包含一个整数,n(1<=n<=20)
输出
输出一个空心菱形,每个边由n个'*'组成
样例输入 Copy
5
样例输出 Copy
** ** ** * * ** ** ** **
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main()
{int n,i,j;scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n+i-1;j++)if(j==n+1-i||j==n+i-1)printf("*");elseprintf(" ");printf("\n");}for(i=1;i<n;i++){for(j=1;j<=2*n-1-i;j++)if(j==i+1||j==2*n-i-1)printf("*");elseprintf(" ");printf("\n");}return 0;}/**************************************************************Problem: 1077User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:2BMnChgz5iWxTCfJJpvCjVRSf/M
****************************************************************/
1078: a+b(多实例测试1)
题目描述
计算A+B
输入
输入第1行为一个整数n(1≤n≤10),代表测试的组数。
下面有n组测试数据,每组1行,为2个整数,为A, B。
输出
对每行输入,输出A+B的值,单独占一行。
样例输入 Copy
2 1 2 3 4
样例输出 Copy
3 7
提示
此类多实例测试解决方案:
scanf("%d",&n);
for(i=1;i<=n;i++)
{
//读入、处理一组测试实例
}
#include"stdio.h"int main(){int a,b,n,i;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d%d",&a,&b);printf("%d\n",a+b);}return 0;}/**************************************************************Problem: 1078User: 542107230106Language: CResult: 正确Time:0 msMemory:1044 kb通过码:3URxW0lmsnCxTCfJJpvCjVRSf/w
****************************************************************/
1079: a+b(多实例测试2)
题目描述
计算A+B
输入
输入数据有多组。
每组一行,为整数A, B。
输出
对每行输入,输出A+B的值,单独占一行。
样例输入 Copy
1 2 3 4
样例输出 Copy
3 7
提示
此类多实例测试解决方案:
while(scanf("%d%d",&a,&b)!=EOF)
{
//读入一组测试数据
//处理
//输出结果
}
注:EOF是宏定义常量-1,scanf函数遇到文件结束标志函数返回值是-1,键盘输入时,ctrl+z表示输入结束
例如:
while(scanf("%d%d",&a,&b)!=EOF)
printf("%d\n",a+b);
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main()
{int a,b;while(scanf("%d%d",&a,&b)!=EOF)
{printf("%d\n",a+b);
}return 0;}/**************************************************************Problem: 1079User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:gxQlD09mvSGxTCfJJpvCjVRSf/0
****************************************************************/
1080: a+b(多实例测试3)
题目描述
计算A+B
输入
输入数据有多组。
每组一行,为两个整数A, B。输入0 0表示输入结束,该组输入不用处理。
输出
对每行输入,输出A+B的值,单独占一行。
样例输入 Copy
1 2 0 0
样例输出 Copy
3
提示
输入0 0结束,本题可以在循环条件中读取键盘输入并同时进行判断:
while(scanf("%d%d",&a,&b), a!=0||b!=0)
printf("%d\n",a+b);
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>int main()
{int a,b;while(scanf("%d%d",&a,&b),a!=0||b!=0)
{printf("%d\n",a+b);
}return 0;}/**************************************************************Problem: 1080User: 542107230106Language: CResult: 正确Time:1 msMemory:1044 kb通过码:3RUkXU9g4CaxTCfJJpvCjVRScPQ
****************************************************************/