题解 UVA10212 【The Last Non-zero Digit.】
2024-08-31 04:59:34
这题在学长讲完之后和看完题解之后才明白函数怎么构造。
这题构造一个$f(n)$
$f(n)$ $=$ $n$除以 $2^{a}$ $*$ $5^{b}$ ,$a$ , $b$ 分别是 $n$ 质因数分解后$2,5$的个数。
然后就暴力算一算就好了。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
//处理出来n的质因子中,x的个数。
int prime(int n,int x)
{
int res=;
while(n) res+=n/x,n/=x;
return res;
}
//f(1)到f(n)中不以5结尾的奇数的个数
int expect_5_end_odd(int n,int x)
{
if(!n) return ;
return n/+(n%>=x)+expect_5_end_odd(n/,x);
}
//以5结尾的数的个数。
int expect_5_end(int n,int x)
{
if(!n) return ;
return expect_5_end(n/,x)+expect_5_end_odd(n,x);
} int t[][]={
,,,,//2^4 2 2^2 2^3 的最后一位
,,,,//3^4 3 3^2 3^3 的最后一位
,,,,//4……
,,,//5……
}; signed main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
m=n-m;
int prime_2=prime(n,)-prime(m,);
int prime_3=expect_5_end(n,)-expect_5_end(m,);
int prime_5=prime(n,)-prime(m,);
int prime_7=expect_5_end(n,)-expect_5_end(m,);
int prime_9=expect_5_end(n,)-expect_5_end(m,); if(prime_2<prime_5){puts("");continue;} int res=;
if(prime_2>prime_5) res*=t[][(prime_2-prime_5)%];
res=res*t[][prime_3%]*t[][prime_7%]*t[][prime_9%]%;
printf("%lld\n",res);
}
return ;
}
最新文章
- 【代码笔记】iOS-UILable电子表显示
- 有吧友需要PDF的下载站点,好吧,我这边汇总一下
- [ACM_几何] Wall
- 定位absolute使内联支持宽高(块属性变为内联,内容默认撑开)margin auto 失效
- hdu 4631Sad Love Story<;计算几何>;
- oc对象的内存管理
- Android 5.0(棒棒糖))十大新特性
- React服务器渲染最佳实践
- win10 uwp MVVM入门
- hive 分组排序,topN
- 如果redis没有设置expire,他是否默认永不过期?
- Hadoop生态圈-Ranger数据安全管理框架
- bootbox.js官方文档中文版
- maven默认本地仓库目录
- sencha touch在华为emotion ui 2.0自带浏览器中圆角溢出的bug
- 开源WebGIS实施方案(六):空间数据(PostGIS)与GeoServer服务迁移
- css单位长度
- Oracle中的dbms_metadata.get_ddl的用法
- OrhtoMCL 使用方法
- 指定jdk编译或运行