1 条题解
-
0
C :
#include<stdio.h> int min(int a,int b) { if(a<b) return a; else return b; } int main() { int n; int a[5843]; int j=1; int x2=1,x3=1,x5=1,x7=1; a[1]=1; for(int i=2;i<=5842;i++) { a[i]=min(min(2*a[x2],3*a[x3]),min(5*a[x5],7*a[x7])); if(a[i]==2*a[x2]) x2++; if(a[i]==3*a[x3]) x3++; if(a[i]==5*a[x5]) x5++; if(a[i]==7*a[x7]) x7++; } while(scanf("%d",&n)==1,n) { if(n%100==11||n%100==12||n%100==13) printf("The %dth humble number is %d.\n",n,a[n]); else if(n%10==1) printf("The %dst humble number is %d.\n",n,a[n]); else if(n%10==2) printf("The %dnd humble number is %d.\n",n,a[n]); else if(n%10==3) printf("The %drd humble number is %d.\n",n,a[n]); else printf("The %dth humble number is %d.\n",n,a[n]); } return 0; }
C++ :
#include<cstdio> #include<algorithm> using namespace std; int main() { int n=2,a[5843],i,p2,p3,p5,p7,ten; p2=p3=p5=p7=1; a[1]=1; while(n<=5842) { a[n]=min(min(2*a[p2],3*a[p3]),min(5*a[p5],7*a[p7])); if(a[n]==2*a[p2]) p2++; if(a[n]==3*a[p3]) p3++; if(a[n]==5*a[p5]) p5++; if(a[n]==7*a[p7]) p7++; n++; } while(scanf("%d",&n)!=EOF,n) { ten=n/10%10; printf("The %d",n); if(ten!=1&&n%10==1) printf("st"); else if(ten!=1&&n%10==2) printf("nd"); else if(ten!=1&&n%10==3) printf("rd"); else printf("th"); printf(" humble number is %d.\n",a[n]); } return 0; }
Pascal :
program p1089; var a:array[1..10000] of int64; i,j,k,n:longint; p2,p3,p5,p7:longint; function min(x,y:int64):int64; begin if x<y then exit(x) else exit(y); end; procedure init; var i,j:longint; x:int64; begin a[1]:=1; i:=1; p2:=1; p3:=1; p5:=1; p7:=1; while i<=5842 do begin x:=min(2*a[p2],min(3*a[p3],min(5*a[p5],7*a[p7]))); if x=2*a[p2] then p2:=p2+1; if x=3*a[p3] then p3:=p3+1; if x=5*a[p5] then p5:=p5+1; if x=7*a[p7] then p7:=p7+1; i:=i+1; a[i]:=x; end; end; begin init; readln(n); while n<>0 do begin k:=n mod 10; j:=(n div 10) mod 10; write('The ',n); if (j<>1) and (k=1) then write('st') else if (j<>1) and (k=2) then write('nd') else if (j<>1) and (k=3) then write('rd') else write('th'); writeln(' humble number is ',a[n],'.'); readln(n); end; end.
Java :
import java.io.File; import java.io.FileOutputStream; import java.math.*; import java.util.Arrays; import java.util.Scanner; public class Main { public static boolean ok(int x){ while(x%2==0) x/=2; while(x%3==0) x/=3; while(x%5==0) x/=5; while(x%7==0) x/=7; return x==1; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); int n; int cas=1; int a[]=new int[5843]; int b[]=new int[10]; //System.out.println(b.charAt(0)); while(in.hasNext()){ n=in.nextInt(); if(n==0) break; b[2]=b[3]=b[5]=b[7]=0; int t; t=n%10; a[0]=1; for(int i=1;i<n;i++){ while(a[b[2]]*2<=a[i-1]) b[2]++; while(a[b[3]]*3<=a[i-1]) b[3]++; while(a[b[5]]*5<=a[i-1]) b[5]++; while(a[b[7]]*7<=a[i-1]) b[7]++; a[i]=Math.min(Math.min(a[b[2]]*2, a[b[3]]*3),Math.min(a[b[5]]*5, a[b[7]]*7)); } System.out.printf("The %d%s humble number is %d.\n",n,(t==1 && (n<10 || (n/10)%10!=1))?"st":((t==2 && (n<10 || (n/10)%10!=1))?"nd":((t==3 && (n<10 || (n/10)%10!=1))?"rd":"th")),a[n-1]); } } }
- 1
信息
- ID
- 1997
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者