1 条题解

  • 0
    @ 2025-4-7 21:41:57

    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
    2088
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者