1 条题解

  • 0
    @ 2023-6-11 12:21:12

    C :

    #include <stdio.h>
    int main()
    {
    int i,t,k,n;
    int a[7]={0}; /*6000000是七位的数值*/
    i = t = k = n = 0;
    scanf("%d",&n);
    if (n > 6000000)
    {
    printf("err:数值超过6000000,请重新输入!");
    return -1;
    }
    while(n >= 10)
    {
    t=1;
    for(i=0;i<=6;i++)
    {
    a[i]=n%10; /*取余,取出当前个位的值*/
    n = n/10; /*n重新赋值,这里值得注意的是,除在c中是整除的意思。所以不用-a[i]也可以得到你想要的值*/
    }
    for(k=0;k<=6;k++)
    {
    if(a[k] != 0)
    t *= a[k];
    }
    n = t;
    }
    printf("%d", n);
    return 0;
    }
    

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int a,s=1,b;
        cin>>a;
        if(a<10){
    	    cout<<a<<endl;
        }
    	else{
    		while(a!=0){
    			if(a%10!=0){
    				s=s*(a%10);
    			}
    			a=a/10;
    		}
    		while(s>=10){
    			b=s;
    			s=1;
    			while(b!=0){
    				if(b%10!=0){
    					s=s*(b%10);
    				}
    				b=b/10;
    			}
    		}
    		cout<<s<<endl;
    	}
    
        return 0;
    }
    

    Java :

    
    import java.util.Scanner;
     
    public class Main {
     
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		long n = in.nextLong();
     
    		System.out.println(f(n));
    	}
    	
    	static long f(long n)
    	{
    		if(n < 10)
    			return n;
    		long sum=1;
    		while(n>0)
    		{
    			if(n%10!=0)
    				sum*=n%10;
    			n/=10;
    		}
    		return f(sum);//4018224312
    	}
     
    } 
    

    Python :

    # 接收输入n
    n = int(input())
    # 如果大于9,才进行循环,不然就直接输出
    while n > 9:
        # 初始化连乘k
        k = 1
        # 短除法拆位
        while n > 0:
            # 如果拆位后的数不是0那就连乘,如果是0就不操作
            if n % 10 != 0:
                k *= n % 10
            # 得到拆位后的商
            n //= 10
        # 短除法拆位后的值要再次拆位,直到小于9才跳出循环,得出最后结果
        n = k
    print(n)
    
    • 1

    信息

    ID
    2706
    时间
    1000ms
    内存
    512MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者