输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。
100 120 300 380
no 370 371
#include<stdio.h> #include<math.h> int panduan(int num){ int a[3] = {0}; int ret = num; int sum = 0; for(int i = 0;i < 3;i++){ a[i] = num % 10; num /= 10; sum += pow(a[i],3); } if(sum == ret) return ret; return -1; } int main(){ int num = 0,a = 0,b = 0,count = 0; while(scanf("%d %d",&a,&b)!=EOF){ getchar(); for(int i = a;i < b;i++){ int ret = panduan(i); if(ret != EOF){ printf("%d ",ret); count++; } } if(count == 0) printf("no\n"); count = 0; } return 0; }
#include<stdio.h> #include<math.h> int main() { int n1=0; int n2=0; while(~scanf("%d%d",&n1,&n2)) { int i=0; int count=0; for( i=n1;i<=n2;i++) { int num=i; int sum=0; while(num) { sum=sum+pow(num%10,3); num/=10; } if(sum==i) { count++; printf("%d ",i); } } if(count==0) printf("no\n"); } return 0; }
import sys flower_set=[] for i in range(100,1000): j = str(i) j1 = int(str(j)[0]) j2 = int(str(j)[1]) j3 = int(str(j)[2]) if i == j1**3+j2**3+j3**3: flower_set.append(i) def flower(m,n): need = [] for i in flower_set: if (i>=m)&(i<=n): need.append(i) if len(need)>0: return ' '.join(map(str,need)) else: return 'no' for line in sys.stdin.readlines(): m,n = map(int, line.strip().split()) print (flower(m,n))
#include "iostream"
using namespace std;
int main()
{
int so, it;
while (scanf("%d %d", &so, &it) != EOF) {
bool flag=0;
for (int i = so; i < it; i++) {
int a, b, c;
a = i / 100;
b = (i / 10) % 10;
c = i % 10;
if (i == a *a*a + b *b*b + c *c*c) {
if(flag==0){
printf("%d",i);
}
else{
printf(" %d", i);
}
flag = 1;
}
}
if (flag != 1)
printf("no");
printf("\n");
}
}
不想用数学函数.....
m,n=input().split() n=int(n) m=int(m) M=[] for i in range(m,n): a=i//100 b=i%100 c=b//10 d=b%10 if i==a**3+c**3+d**3: M.append(i) if M==[]: print('no') else: for i in M[:-1]: print(i,end=' ') print(M[-1])
#include<iostream> #include<vector> #include<math.h> using namespace std; int main() { int m=0,n=0; while(cin>>m>>n) { vector<int> ivec; for(int i=m;i<=n;i++) { int a=i/100; //百位数; int b=((i%100)/10); //十位数; int c=i-a*100-b*10; if(pow(a,3)+pow(b,3)+pow(c,3)==i) ivec.push_back(i); } if(ivec.size()==0) cout<<"no"; else { for(int i=0;i<ivec.size()-1;i++) cout<<ivec[i]<<" "; cout<<ivec[ivec.size()-1]; } } return 0; }
}
#include<stdio.h> #include<math.h> // double pow(double x, double y) 返回x的y次方 int main(){ int m , n , i , judge = 0 , one , ten , hun; while( scanf("%d %d",&m,&n) != EOF ) { for( i = m ; i <= n ; i++) { one = i % 10; hun = i / 100; ten = ( i - hun * 100 ) / 10; if( pow(one,3) + pow(ten,3) + pow(hun,3) == i ) { judge = 1; printf("%d ",i); } if( i == n ) { if( judge == 0 ) printf("no"); printf("\n"); } } } return 0; }
#include <iostream> int main() { int m, n, val, sum, tmp, flag; while (scanf("%d %d", &m, &n) != EOF) { flag = 1; for (int i = m; i <= n; ++i) { val = i; sum = 0; while (val) { tmp = val % 10; sum += (tmp * tmp * tmp); val /= 10; } if (sum == i) printf("%d ", i), flag = 0; } if (flag) printf("no"); printf("\n"); } return 0; }
#include<stdio.h> #include<math.h> int main() { int m=0,n=0; int a=0,b=0,c=0,i=0,j=0; while(scanf("%d %d",&m,&n)!=-1) { j=0;//状态置0找不到 for(i=m;i<=n;i++) { c=i%10;//获取个位数字 b=i/10%10;//获取十位数字 a=i/100%10;//获取百位数字 if(i==pow(a,3)+pow(b,3)+pow(c,3)) { printf("%d ",i);//打印输出找到的数字 j=1;//状态置1找到了 } } if(j==0) printf("no\n"); } return 0; }
#include <stdio.h> #include <math.h> int main() { int m,n,a,b,c,sum,x=0; while(scanf("%d %d\n",&m,&n)!=EOF) { if(m>=100&&n<=999&&m<=n) { for(m;m<=n;m++) { a=m%10; b=m/10%10; c=m/100; sum=pow(a,3)+pow(b,3)+pow(c,3); if(m==sum) { printf("%d ",m); x++; } } if(x==0) { printf("no\n"); } } else { printf("False"); } } return 0; }
#include <iostream> using namespace std; bool flower(int n) { int x = n, sum = 0; while (n) { int e = n % 10; sum += e * e * e; n /= 10; } if (sum == x) return true; return false; } int main() { int m, n; while (cin >> m >> n) { int cnt = 0; for (int i = m; i <= n; i ++ ) { if(flower(i)) { cnt ++; cout << i << ' '; } } if (!cnt) cout << "no" << endl; else cout << endl; } }
var m,n,i,a,b,c,s:longint; begin while not eof() do begin readln(m,n); s:=0; for i:=m to n do begin a:=i div 100; b:=i div 10 mod 10; c:=i mod 10; if a*a*a+b*b*b+c*c*c=i then begin inc(s); if s=1 then write(i) else write(' ',i); end; end; if s=0 then write('no'); writeln; end; end.对了好像就我一个发了Pascal代码
def func(n): a = int(n / 100) b = int((n - a*100) / 10) c = n - a*100 - b*10 return a,b,c raw_input = input() input_num = raw_input.split() min_num = int(input_num[0]) max_num = int(input_num[1]) res = [] for i in range(min_num, max_num+1): a,b,c = func(i) temp = a**3 + b**3 + c**3 if temp == i: res.append(str(i)) if len(res) == 0: print('no') else: res = ' '.join(res) print(res)
#include <stdlib.h> #include <stdio.h> #include <iostream> using namespace std; #include <string> #include <vector> void fun(int m,int n) { int s1; int s2; int s3; int count=0; for(int i=m;i<=n;i++) { s1=i/100; s2=(i-s1*100)/10; s3=i%10; if(i==(s1*s1*s1+s3*s3*s3+s2*s2*s2)) { if(count==0) { cout<<i; } else { cout<<" "<<i; } count++; } } if(count==0) { cout<<"no"; } cout<<endl; } int main() { int m[1000], n[1000]; int start; int end; int length=0; while(cin>>start>>end) { m[length]=start; n[length]=end; length++; } for(int i=0;i<length;i++) { fun(m[i],n[i]); } return 0; }
#include <iostream> #include <cmath> using namespace std; bool Fun(int n) { int a,b,c; a = n/100; b = (n/10)%10; c = n%10; if(n == pow(a,3)+pow(b,3)+pow(c,3)) return true; else return false; } int main() { int m,n; while(cin>>m>>n) { int cnt = 0; for(int i=m;i<=n;i++) { if(Fun(i)) { cnt++; if(cnt==1) cout<<i; else cout<<" "<<i; } } if(cnt==0) cout<<"no"; cout<<endl; } return 0; }