java实现:

import java.util.Scanner;
import java.io.IOException;
import java.io.FileReader;
import java.util.Vector;
import java.util.Arrays;
import java.util.TreeMap;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;class Main
{public static final boolean DEBUG = false;public static final int N = 1000;public static boolean[] vis;public static Vector<Integer> vPrime;public static void sieve(){vis = new boolean[N];Arrays.fill(vis,  true);vis[0] = vis[1] = false;for (int i = 2; i < 35; i++) {if (vis[i]) {for (int j = i * i; j < N; j += i) {vis[j] = false;}}}vPrime = new Vector<Integer>();for (int i = 2; i < N; i++) {if (vis[i]) {vPrime.add(new Integer(i));}}}public static void main(String[] args) throws IOException {Scanner cin;int n, a;if (DEBUG) {cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));} else {cin = new Scanner(System.in); }sieve();while (cin.hasNext()) {n = cin.nextInt();a = cin.nextInt();TreeMap<Integer, Integer> m = new TreeMap<Integer, Integer>();for (int i = 0; i < vPrime.size(); i++) {int div = vPrime.elementAt(i);if (div > a) break;if (a % div == 0) {int c = 0;while (a % div == 0) {c++;a /= div;}m.put(div, c);}}if (a != 1) m.put(a, 1);TreeMap<Integer, Integer> m2 = new TreeMap<Integer, Integer>();for (int i = 2; i <= n; i++) {int tmp = i;Set<Integer> s = m.keySet();Iterator<Integer> it = s.iterator();while (it.hasNext()) {int div = it.next().intValue();if (div > tmp) break;if (tmp % div == 0) {int c = 0;while (tmp % div == 0) {c++;tmp /= div;}if (m2.containsKey(div)) {int temp = m2.get(div);m2.put(div, temp + c);} else {m2.put(div, c);}}}}int ans = Integer.MAX_VALUE;Vector<Integer> v = new Vector<Integer>(m.values());int i = 0;Collection<Integer> c = m2.values();Iterator<Integer> it = c.iterator();while (it.hasNext()) {ans = Math.min(ans, it.next().intValue() / v.elementAt(i));i++;}if (ans == Integer.MAX_VALUE) ans = 0;System.out.println(ans);}}
}

C++实现:

#include <iostream>
#include <fstream>
#include <map>
#include <vector>
#include <bitset>
#include <algorithm>
#include <limits>using namespace std;const int N = 1000;bitset<N> vis;
vector<int> vPrime;void sieve();int main()
{int n, a;#ifndef ONLINE_JUDGEifstream cin("d:\\OJ\\uva_in.txt");#endif // ONLINE_JUDGEsieve();while (cin >> n >> a) {map<int, int> m;for (int i = 0; i < vPrime.size(); i++) {if (vPrime[i] > a) break;if (a % vPrime[i] == 0) {int c = 0;while (a % vPrime[i] == 0) {c++;a /= vPrime[i];}m[vPrime[i]] = c;}}if (a != 1) m[a] = 1;map<int, int> m2;for (int i = 2; i <= n; i++) {int tmp = i;for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {if (it->first > tmp) break;if (tmp % it->first == 0) {int c = 0;while (tmp % it->first == 0) {c++;tmp /= it->first;}m2[it->first] += c;}}}vector<int> v;for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) v.push_back(it->second);int i = 0;int ans = numeric_limits<int>::max();for (map<int, int>::iterator it = m2.begin(); it != m2.end(); it++, i++) {it->second = it->second / v[i];ans = min(ans, it->second);}if (ans == numeric_limits<int>::max()) ans = 0;cout << ans << endl;}return 0;
}void sieve()
{vis.set();vis[0] = vis[1] = 0;for (int i = 2; i < 40; i++) {if (vis[i]) {for (int j = i * i; j < N; j += i) {vis[j] = 0;}}}for (int i = 0; i < N; i++) {if (vis[i]) vPrime.push_back(i);}
}

题目1104:整除问题相关推荐

  1. 题目 1224: 整除的尾数

    时间限制: 1Sec 内存限制: 128MB 题目描述:(原题链接) 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢 输入: 输入数据有若干组,每组数据包含二个整 ...

  2. 1224:整除的尾数 c语言

    题目描述 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢 输入 输入数据有若干组,每组数据包含二个整数a,b(0<a<10000, 10<b&l ...

  3. 2021牛客寒假算法基础集训营2 D.牛牛与整除分块

    2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...

  4. LeedCode: 计算器专场

    今天滴滴第一面遇到这道题,mark一下! 初级版 题目 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法仅保留整数 ...

  5. Apktool重打包Apk

    1.下载软件 首先下载apktool.bat和apktool.jar,这两个工具我已上传到了github上,可以直接下载. 下载链接:https://github.com/HelloKittyNII/ ...

  6. leetcode题解:两数相除

    题目描述 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 整数 ...

  7. 网易2019实习生招聘题目 被3整除

    题目 小Q得到一个神奇的数列: 1, 12, 123,-12345678910,1234567891011-. 并且小Q对于能否被3整除这个性质很感兴趣. 小Q现在希望你能帮他计算一下从数列的第l个到 ...

  8. LeetCode 刷题系列(前缀和题目)之 974. 和可被 K 整除的子数组

    题目: 给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的(连续.非空) 子数组 的数目. 子数组 是数组的 连续 部分. 示例 1: 输入:nums = [4,5,0,- ...

  9. HDOJ题目分类大全

    版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...

最新文章

  1. CentOS 安装Python3
  2. 网络推广外包浅析当下网站优化处于健康状态有利于网络推广外包
  3. spring boot filter配置方式
  4. SpringMVC的使用与requestMapper的使用
  5. Eclipse里Java项目设置Java编辑器版本的位置
  6. delphi 的一些备忘
  7. linux setsockopt函数
  8. vSphere 7融合Kubernetes,构建现代化应用的平台
  9. IIS Express局域网访问配置
  10. Recursive Depth first search graph(adj matrix)
  11. BGP中的环路和次优路径问题
  12. Oracle表名、列名、约束名的长度限制
  13. 动态定义控件时事件触发的总结
  14. (转)《精通比特币》原码分析: rpc_block
  15. 修改linux的防火墙
  16. php 微信小程序签到功能,微信小程序每日签到
  17. adb命令查看手机电池信息
  18. 原生js做购物车全选选中商品显示价格和小计的计算
  19. 培训演讲的小技巧,你知道多少?
  20. 算法大师孙膑--田忌赛马(转自labuladong)

热门文章

  1. Silverlight项目构成
  2. python 程序流程控制结构-【笔记】《python语言程序设计》——程序的控制结构...
  3. 0基础学python看什么书-编程语言学python必看这三本书,少走一半弯路
  4. python 编程一日一练-「每日一练」巧用python生成随机数
  5. python urllib.request 爬虫 数据处理-Python网络爬虫(基于urllib库的get请求页面)
  6. python中处理日期和时间的标准模块是-Python时间相关处理
  7. python基本语法规则-Python-基本语法元素
  8. excel调用python编程-如何在excel中调用python脚本
  9. 西安python工资怎么样-在西安为什么对Python编程需求这么大?工资这么高?
  10. python没基础可以学吗-终于认识没有基础怎么学python