【数论】小A进学校
小A进学校
题目描述
保安会说出两个整数n和k,小A需要回答的阶乘在进制下末尾零的个数。
输入
输出
样例输入
10 40
样例输出
2
提示

【题解】
进制为k,然后对k进行质因数分解即可,然后取每个质数,搜索有多少个,然后每个 质数的个数之和 ,再取一个最小值即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll ;
const int N = 2e6+ ; /* Euler function */
int prime[N] , cnt ;
bool Is_prime[N];
void Euler(){
for( int i = ; i < N ; i++ ){
if( !Is_prime[i] ){
prime[cnt++] = i ;
}
for( int j = ; j < cnt && prime[j] * i < N ; j ++ ){
Is_prime[ prime[j] * i ] = true ;
if( i % prime[j] == ){
break;
}
}
}
} ll n , k ;
ll A[N],B[N],C[N];
ll qpow( ll a , ll b ){
ll ans = ;
while( b ){
if( b & ) ans = ans * a ;
b >>= ;
a = a * a ;
}
return ans ;
}
int main()
{
Euler() ;
/*
for( int i = 0 ; i < 10 ; i++ ){
printf("%d\n",prime[i]);
}
*/ ios_base :: sync_with_stdio( false );
cin.tie(NULL) , cout.tie(NULL);
cin >> n >> k ; int tot = ;
for( int i = ; i < cnt && prime[i] * prime[i] <= k ; i++ ){
if( k % prime[i] == ){
A[tot] = prime[i] ;
while( k % prime[i] == ){
k /= prime[i] ;
B[tot] ++ ;
}
tot ++ ;
}
} if( k != 1ll ){
A[tot] = k ;
B[tot] = ;
tot ++ ;
} for( int i = ; i < tot ; i++ ){
ll tmp = A[i] ;
//cout << tmp << endl;
ll num = n / tmp ;
for( ; tmp <= n / A[i] ; ){
tmp = tmp * A[i] ;
num += n / tmp ;
}
tmp = qpow( A[i] , B[i] );
C[i] = num / B[i] ;
//cout << A[i] << " " << num << " " << tmp << " " << B[i] << endl;
}
ll ans = 0x7fffffffffffffff;
for( int i = ; i < tot ; i++ ){
ans = min( ans , C[i] ) ;
}
cout << ans << endl ;
return ;
}
【数论】小A进学校的更多相关文章
- BZOJ4635 : 数论小测验
第一问: 设$a[i]$表示使用$[1,i]$的数字$n$次形成的数组里有多少个$\gcd=1$. 考虑容斥,则$a[i]=i^n-\sum_{j=2}^i a[\lfloor\frac{i}{j}\ ...
- Codeforces Round #538 (Div. 2) C 数论 + 求b进制后缀零
https://codeforces.com/contest/1114/problem/C 题意 给你一个数n(<=1e8),要你求出n!在b进制下的后缀零个数(b<=1e12) 题解 a ...
- codeforces 615 D. Multipliers (数论 + 小费马定理 + 素数)
题目链接: codeforces 615 D. Multipliers 题目描述: 给出n个素数,这n个素数的乘积等于s,问p的所有因子相乘等于多少? 解题思路: 需要求出每一个素数的贡献值,设定在这 ...
- noip考前抱佛脚 数论小总结
exCRT 求解韩信点兵问题,常见的就是合并不同\(mod\). 先mo一发高神的板子 for(R i=2;i<=n;++i){ ll Y1,Yi,lcm=Lcm(p[i],p[1]); exg ...
- C++-蓝桥杯-小计算器[进制转化][模拟]
#include <cstdio> #include <string> #include <cstring> #include <iostream> u ...
- [SDOI2009]学校食堂Dining
题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ...
- [SDOI2009]学校食堂
题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ...
- SDOI 2009 学校食堂
洛谷 P2157 [SDOI2009]学校食堂 洛谷传送门 JDOJ 1924: [SDOI2009]学校食堂Dining JDOJ传送门 Description 小F 的学校在城市的一个偏僻角落,所 ...
- BZOJ 1226: [SDOI2009]学校食堂Dining
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 730 Solved: 446[Submit][ ...
随机推荐
- PHP如何解决网站大流量与高并发的问题(四)
动态语言的并发处理 相关概念 什么是进程.线程.协程 什么是多进程.多线程 同步阻塞模型 异步非阻塞模型 php并发编程实践 什么是进程.线程.协程 进程 进程是一个执行中的程序 进程的三态模型:多道 ...
- c#传不确定的参数个数,比如int型
a(params int[] ) 调用时a(1,2,3,4,5,6)
- PyCharm 中写 Turtle代码没提示以及标黄问题
PyCharm 中在使用Turtle(海龟)库绘图体系时,代码明明是正确可以运行的,但是没有提示 ,代码出现黄色标记以及红色波浪线 ,经验不足的人还以为自己的书写方法错误,毕竟出现了红色波浪线,效果如 ...
- win10 'make' 不是内部或外部命令
win10 解决“ 'g++' 不是内部或外部命令,也不是可运行的程序或批处理文件”的问题 https://www.jianshu.com/p/9bffbaf12bed windows下提示make不 ...
- C++中的break、continue、goto语句
break.continue.goto break用于提前结束循环.只能打断一层循环.是把一层循环全部结束掉.continue则是提前结束循环内单次,继续循环下一步.
- Microsoft OA
Given a string S consisting of N lowercase letters, return the minimum number of letters that must b ...
- centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版
zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...
- scipy详解
登月图片消噪 scipy.fftpack模块用来计算快速傅里叶变换速度比传统傅里叶变换更快,是对之前算法的改进图片是二维数据,注意使用fftpack的二维转变方法 import numpy a ...
- Python 初级 5 判断再判断
复习: 1 三种数据类型: 整数:int, (1, 2, 200) 浮点数: float(2.0, 9.5, 100.38) 字符串: str("小明", "abc&qu ...
- Sq常用操作
sql创建表实例: CREATE TABLE mytable( id varchar(40) NOT NULL default '', userId varchar(40) NOT NULL defa ...