博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目1104:整除问题
阅读量:5234 次
发布时间:2019-06-14

本文共 1376 字,大约阅读时间需要 4 分钟。

题目描述:

给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。

输入:

两个整数n(2<=n<=1000),a(2<=a<=1000)

 

算法:

分解N!和  a 的因子...是否整除就看因子是否包含。。

View Code
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int n, a, cnt;int prime[1100];int hash[1100]={ 0};int visit[1100];void Get_Prime( ){ cnt = 0; for( int i = 2; i <= 35; i++) { if( !hash[i] ) { for( int j = i + i; j <= 1000; j += i ) hash[j] = 1; } } for( int i = 2; i <= 1000; i++) if( !hash[i] ) prime[cnt++] = i; }void Get_Fac( int x, int *array){ int id = 0; while( x ) { while( x % prime[id] == 0 && x!= 1) x /= prime[id], array[prime[id]]++; id++; if( x == 1) break; } } void solve( ){ int ans = 0x7f7f7f7f; for( int i = 0; i < 1000; i++) { if ( hash[i] && visit[i] ) { if( hash[i] >= visit[i] ) { ans = min(ans, hash[i] / visit[i]); } else { ans = 0; break; } } else if( !hash[i] && visit[i] ) { ans = 0; break; } } printf("%d\n",ans); }int main( ){ Get_Prime( ); while( scanf("%d%d",&n,&a) != EOF) { memset(hash,0,sizeof(hash)); memset(visit,0,sizeof(visit)); for( int i = 2; i <= n; i++) Get_Fac( i, hash); Get_Fac(a, visit); solve( ); } return 0; }

 

 

转载于:https://www.cnblogs.com/tangcong/archive/2012/08/21/2649558.html

你可能感兴趣的文章
实验2-2
查看>>
MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>
监控工具之---Prometheus 安装详解(三)
查看>>
不错的MVC文章
查看>>
IOS Google语音识别更新啦!!!
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
BootScrap
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Lintcode: Partition Array
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
架构图-模型
查看>>
黑马程序员_Java基础枚举类型
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
ajax向后台传递数组
查看>>