解题思路:例子分析:
4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 → 4*2 → 8
分解位数,求第三次位数的乘积
注意事项:如果某个位数上为0,则不相乘 如:4018224312 标记绿色的不相乘因为0*0=0
参考代码:
#include <stdio.h> #include <math.h> typedef long long ll; ll f(ll x)//求一个数,每个位数的乘积 { ll k,sum=1; while(x!=0) { k=x%10;//取模求某个 位数 if(k!=0)//k不等0,相乘 sum=sum*k; x=x/10;//往前移动一位数 } return sum; } int main (){ ll x; ll k,i,t; scanf("%lld",&x); t=f(x); for(i=0;i<2;i++)//本题目求三次即可 { t=f(t); } printf("%d",t); }
0.0分
0 人评分
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:804 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:934 |
Cylinder (C语言描述+详细分析)浏览:3375 |
C二级辅导-进制转换 (C语言代码)浏览:750 |
C二级辅导-公约公倍 (C语言代码)浏览:537 |
分糖果 (C语言代码)浏览:980 |
格式化数据输出 (C语言代码)浏览:882 |
C语言训练-大、小写问题 (C语言代码)浏览:719 |
C语言程序设计教程(第三版)课后习题10.7 (用指针求解)浏览:1542 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:569 |