1 条题解
-
0
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
- 上传者