N元钱买N只鸡,公鸡每只5元,母鸡每只3元,小鸡1元3只,N元钱必须刚好买N只鸡,而且鸡必须整只买,不能劈开买。
有几种买法呢?这就是N鸡问题。
在一行中输入一个正整数N。(N<500)
在一行中输出两个整数c s,中间用一个空格隔开,表示N元钱买N只鸡共有 c 种买法,且所有买法的公鸡数量之和是 s。
如果无解,则 s 为 -1.
100
4 24
1
0 -1
-
- #include<stdio.h>
- int main()
- {
- int N,c=0,s=0;
- int gong,mu,xiao;
- scanf("%d",&N);
- for(gong=0;gong<=N;gong++)
- {
- for(mu=0;mu<=N-gong;mu++)
- {
- for(xiao=0;xiao<=N-gong-mu;xiao++)
- {
- if(gong+mu+xiao==N&&gong*5+mu*3+xiao/3==N&&xiao%3==0)
- {
- c++;
- s+=gong;
- }
- }
- }
- }
- if(c==0){
- printf("0 -1");
- }
- else
- printf("%d %d",c,s);
- return 0;
- }
本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。
输出空心字符菱形。
-
- B 5
- B
- C C
- D D
- C C
- B
- #include <stdio.h>
- // 1、先画出实心菱形(把菱形分成上下俩部分,再分成正三角和倒三角 )
- // 2、 把输入的N(n层)带入循环
- // 3、 用if语句使菱形中心为空
- // 4、 利用ASCII码的加减 实现字母组成
- int main()
- {
- int n,i,j;
- char c;
- scanf("%c%d",&c,&n);
- //针对奇数层的菱形 上部分
- for(i=1;i<=n/2+1;i++)
- {
- //第一个为上班边的倒三角
- for(j=n/2;j>=i;j--)
- printf(" ");
- //第二个上半边的正三角
- for(j=0;j<i*2-1;j++)
- {
- //菱形中间的空心用if else来实现
- if(j==0 || j==i*2-2)
- printf("%c",c);
- else
- printf(" ");
- }
- c+=1;
- printf("\n");
- }
- c-=1;
- //下部分
- for(i=1;i<=n/2;i++)
- {
- c-=1;
- //第三个为下半边的正三角
- for(j=1;j<=i;j++)
- printf(" ");
- //第四个三角形为倒三角形
- for(j=n-2;j>=i*2-1;j--)
- {
- if(j==n-2 || j==i*2-1)
- printf("%c",c);
- else
- printf(" ");
- }
- printf("\n");
- }
- }
本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。
输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。
- 5
- 2/5 4/15 1/30 -2/60 8/3
3 1/3
- 2
- 4/3 2/3
2
- 3
- 1/3 -1/6 1/8
7/24
- #include<stdio.h>
- #include<stdlib.h>
- int gcd(int x,int y)
- {
- return y?gcd(y,x%y):x;
- }
- int main()
- {
- int n,a1,b1,a2,b2,t,p;
- scanf("%d",&n);
- scanf("%d/%d",&a1,&b1);
- n--;
- while(n--)
- {
- scanf("%d/%d",&a2,&b2);
- a1=a1*b2+a2*b1;b1*=b2; //进行通分
- if(a1<0) //p代表正负
- a1*=-1,p=-1;
- else if(a1==0) //分子为0的情况
- {
- b1=1;continue;
- }
- else p=1;
- t=gcd(a1,b1);
- a1=a1*p/t;b1/=t;
- }
- if(abs(a1)%b1==0) printf("%d\n",a1/b1); //分类讨论输出
- else if(abs(a1)/b1>=1) printf("%d %d/%d\n",a1/b1,abs(a1)-abs(a1/b1)*b1,b1);
- else printf("%d/%d\n",a1,b1);
- }
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入在一行中给出一个正整数N(3≤N≤7)。
按递增顺序输出所有N位水仙花数,每个数字占一行。
3
- 153
- 370
- 371
- 407
- #include <stdio.h>
- int pow(int a,int b){
- int i,t=a;
- for(i=1;i<b;i++){
- a=a*t;
- }
- return a;
- }
- int main (){
- int i,n,N;
- int sum,num;
- scanf("%d",&N);
- n=pow(10,N);
- for(i=pow(10,N-1);i<n;i++){
- num=i;
- sum=0;
- while(num>0){
- sum=sum+pow(num%10,N);
- num=num/10;
- }
- if(sum==i){
- printf("%d\n",i);
- }
- }
- return 0;
- }
给定一个整数m(50 输入在一行中给出一个正整数m(50 在一行中按递减顺序输出10个满足条件的素数,每个素数输出占6列。没有其它任何附加格式和字符。 输出1000以内所有各位数字之和为n的正整数,例如:如果输入的n是6,那么,105的各位数字之和1+0+5=6, 123的各位数字之和1+2+3=6,两者都满足要求。每行输出6列,每个整数占8位宽度右对齐。 从键盘输入整数n的值。 每行输出6列,每个整数占8位宽度右对齐。如果最后一行不足6列,也需要换行。 在这里给出一组输入。例如: 在这里给出相应的输出。例如: 输入格式:
输出格式:
输入样例:
229
输出样例:
227 223 211 199 197 193 191 181 179 1737-6 1000以内所有各位数字之和为n的正整数
输入格式:
输出格式:
输入样例:
6
输出样例: