#include<stdio.h> intmain() { for(int i = 111; i <= 999; i++) { int a = i / 100; int b = i /10 % 10; int c = i % 10; int s = a*a*a + b*b*b + c*c*c; if(s == i) printf("%d\n", i); } return0; }
习题2-2 韩信点兵(hanxin)
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人 一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组 数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c< 7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件 结束为止。 样例输入: 2 1 6 2 1 3 样例输出: Case 1: 41 Case 2: No answer
#include<stdio.h> #define LOCAL intmain() { #ifdef LOCAL freopen("data.in", "r", stdin); freopen("data.out","w", stdout); #endif int k = 0; int n, m; double s; while(scanf("%d %d", &n, &m) != EOF && n && m) { s = 0; //s要清零 for(int i = n; i <= m; i++) { //s += (1.0/(i*i)); //乘法溢出 s += (1.0/i/i); } if(k) printf("\n"); printf("Case %d: %.5f\n",++k,s); } return0; }