04-0. 求符合给定条件的整数集(15)
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:
输入在一行中给出A。
输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:
2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
代码:
#include <stdio.h> int main() { int num,i,j,h; scanf("%d",&num); int count = 0; for(i=num;i<=num+3;i++){ for(j=num;j<=num+3;j++){ for(h=num;h<=num+3;h++){ if(h!=j && i!=j && i!=h){ printf("%d%d%d ",i,j,h); count +=1; } if (count == 6){ printf(" "); count = 0; } } } } return 1; }
04-1. 水仙花数(20)
水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3<=N<=7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
代码:
#include <stdio.h> int main() { int n,i,j,s,k,a,b; scanf("%d",&n); int min = 1; int max; for (i=1; i<n; i++){ min *= 10; } max = min * 10 - 1; for (i=min; i<=max; i++){ j = i; s = 0; while ( j!=0 ){ a = j % 10; b = 1; for (k=1;k<=n;k++){ b *= a; } s += b; j = j / 10; } if (i == s){ printf("%d ",i); } } return 1; }