题目55:整除问题
来源:互联网 发布:java伪静态 编辑:程序博客网 时间:2024/04/30 00:49
http://ac.jobdu.com/problem.php?cid=1040&pid=54
- 题目描述:
给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
- 输入:
两个整数n(2<=n<=1000),a(2<=a<=1000)
- 输出:
一个整数.
- 样例输入:
6 10
- 样例输出:
1
// 题目55:整除问题.cpp: 主项目文件。#include "stdafx.h"#include <cstdio>#include <cstring>#include <math.h>const int N=1001;bool prime[N];int base_n[N];int base_a[N];void selectPrime(){memset(prime,0,sizeof(prime));prime[0]=prime[1]=true;for(int i=2;i<N;i++){if(!prime[i]){for(int j=i+i;j<N;j+=i)prime[j]=true;}}}void selectBase(int num,int *hash){int tmp=(int)sqrt(1.0*num);for(int i=2;i<=tmp;i++){if(num==1)break;if(!prime[i]){while(num%i==0){hash[i]++;num/=i;}}}if(num!=1)hash[num]++;}bool compare(int *hash1,int *hash2){for(int i=2;i<N;i++)if(hash1[i]<hash2[i])return false;return true;}int main(){ int n,a;selectPrime();while(scanf("%d%d",&n,&a)!=EOF){memset(base_n,0,sizeof(base_n));memset(base_a,0,sizeof(base_a));for(int i=2;i<=n;i++)selectBase(i,base_n);selectBase(a,base_a);int cnt=0;int tmp[N];memset(tmp,0,sizeof(tmp));while(compare(base_n,tmp)){for(int i=0;i<N;i++)tmp[i]+=base_a[i];cnt++;}printf("%d\n",cnt-1);} return 0;}
- 题目55:整除问题
- 55-题目1104:整除问题
- 题目1104:整除问题
- 题目1104:整除问题
- 题目1104:整除问题
- 题目1104:整除问题
- 题目1104:整除问题
- 题目1104:整除问题
- 九度oj 题目1104:整除问题
- 九度题目1104整除问题
- 【九度】题目1104:整除问题
- 九度 oj 题目1104:整除问题
- 题目300 整除个数
- OJ题目--数字整除
- 整除问题
- 整除问题
- 整除问题
- 整除问题
- 修复Mac下命令行Git无法在vi中commit的错误-- here was a problem with the editor 'vi'.
- Android 中的安全机制
- 题目54:质因数的个数
- SQLSERVER:已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。
- 对js中new、prototype的理解
- 题目55:整除问题
- 二叉查找树C++实现
- VC控件ListCtrl的使用方法总汇
- 题目56:约数的个数
- [JNI]学习笔记系列:二 基本数据类型,字符串,数据
- 利用GetPrivateProfileString读取配置文件(.ini)
- makefile 的简单模板
- 题目57:人见人爱 A ^ B
- Short Message Service / SMS Tutorial