题目链接:http://codeforces.com/problemset/problem/236/B
Easy Number Challenge
time limit per test

2 seconds

memory limit per test

256 megabytes

Let's denote d(n) as the number of divisors of a positive integer n. You are given three integers ab and c. Your task is to calculate the following sum:

Find the sum modulo 1073741824 (230).

Input

The first line contains three space-separated integers ab and c (1 ≤ a, b, c ≤ 100).

Output

Print a single integer — the required sum modulo 1073741824 (230).

Examples
input
2 2 2

output
20

input
5 6 7

output
1520

Note

For the first example.

  • d(1·1·1) = d(1) = 1;
  • d(1·1·2) = d(2) = 2;
  • d(1·2·1) = d(2) = 2;
  • d(1·2·2) = d(4) = 3;
  • d(2·1·1) = d(2) = 2;
  • d(2·1·2) = d(4) = 3;
  • d(2·2·1) = d(4) = 3;
  • d(2·2·2) = d(8) = 4.

So the result is 1 + 2 + 2 + 3 + 2 + 3 + 3 + 4 = 20.

题意:首先定义d(x)表示x的因子个数。然后给出三个正整数a、b、c,求
#include <cstdio>
#include <iostream>
#include <cstring>
#include <set>
#include <cmath>
using namespace std;
typedef long long LL;
const int Mod = 1073741824;
int prime[1000000], vis[10000050];int pri_cnt;
void get_prime() { // 筛法求素数int m = (int)sqrt(100000 + 1);pri_cnt = 0;memset(vis, 0, sizeof(vis));vis[0] = 1;vis[1] = 1;for(int i = 2; i <= m; ++i) {if(!vis[i]) {prime[pri_cnt++] = i;for(int j = i * i; j <= 1000005;j += i)vis[j] = 1;}}
}int get_cnt(int x) { // 求x的因数有多少个if(x == 1) return 1;if(!vis[x]) return 2;int ans = 1;for(int i = 0; x != 1 && i < pri_cnt; ++i) {int cnt = 0;while(x % prime[i] == 0) {cnt++;x /= prime[i];}ans = ans * (cnt + 1);}return ans;
}int main() {get_prime();int a, b, c;while(~scanf("%d%d%d", &a, &b, &c)) {int ans = 0;for(int i = 1; i <= a; ++i) {for(int j = 1; j <= b; ++j) {for(int k = 1; k <= c; ++k) {ans = (ans + get_cnt(i * j * k)) % Mod;}}}printf("%d\n", ans);}return 0;
}

CodeForce 236B Easy Number Challenge(筛法求素数 + 整数因式分解)相关推荐

  1. Java用“埃氏筛法”求素数

    用"埃氏筛法"求素数. 先去掉2的倍数,再去掉3的倍数,再去掉4的倍数,--依此类推,最后剩下的就是素数. 要求:使用数组,使用数组的长度,使用增强的for语句 import ja ...

  2. 线性筛法求素数c语言,[算法]素数筛法(埃氏筛法线性筛法)

    一.素数筛的定义 给定一个整数n,求出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题). 二.埃氏筛法(Eratosthenes筛法) 埃氏筛法又叫做Eratosthenes筛法 ...

  3. 一般筛法求素数+快速线性筛法求素数

    一般筛法求素数+快速线性筛法求素数 标签: 正则表达式算法优化扩展c 2010-08-22 01:28 28738人阅读 评论(8) 收藏 举报  分类: 算法学习资料(5)  版权声明:本文为博主原 ...

  4. 一般筛法和快速线性筛法求素数 求素数的一点总结

    素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 ..N^(0.5) ,看看能否整除N. 如果需要判断的次数较多,则先用 ...

  5. 1042: 筛法求素数

    1042: 筛法求素数 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1387  Solved: 918 [Submit][Status][Web B ...

  6. 素数筛法求素数(线性时间)

    摘自:http://blog.csdn.net/once_hnu/article/details/6302283 逆向思维的典型应用! 1)普通方法判断素数:O(n*sqrt(n)) 2)筛法求素数: ...

  7. 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验

    普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...

  8. 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】

    素数和合数共同的性质: 1.a > 1是合数,当且仅当a = b * c,其中1 < b < a,1 < c < a. 2.合数必有素数因子. 3.如果d > 1, ...

  9. 筛法求素数 (20分)

    题干: 素数是仅仅能被它本身和1整除的任何整数.筛法求素数是一种查找素数的方法.它的算法如下: 1.创建一个数组,并将所有元素初始化为1(真).具有素数下标的数组元素将保持为1,而其它数组元素最终将被 ...

最新文章

  1. 第六届数学、计算机与生命科学交叉研究青年学者论坛 (大牛云集的生信会议,免注册费且提供午餐)...
  2. 【六一儿童节】回忆一下“孩子们的游戏”!(码农版)
  3. Web Farm Web Garden
  4. 两个组件连线_如何正确的使用日志组件 Log4j、SLF4J、Logback
  5. linux下apache+SVN搭建完美版
  6. setTimeout和setInterval的使用
  7. android computescroll_Android Scroller与computeScroll方法的调用关系
  8. Python中字符串切片详解
  9. hadoop join之semi join
  10. 【HDU - 2255】奔小康赚大钱(KM算法模板,二分图最优匹配)
  11. CentOS 5安装mplayer
  12. 当初阿里巴巴、百度、美团都差点错过的架构,现在用起来真香!
  13. 死锁的充分必要条件、死锁预防、死锁避免、死锁检测和解除
  14. 计算机一级win7操作题,计算机等级考试一级WIN7操作题.docx
  15. 芒格:倒过来思考有利于理解事物本质并解决问题
  16. 3分钟下载好网易云付费音乐
  17. 传感器实验——光敏电阻传感器
  18. 有限温度量子多体系统与热态张量网络
  19. 11月全国程序员平均工资最新出炉,网友:我丢了同行的脸
  20. 全球软件公司排名2020

热门文章

  1. 三大独家优势赢得关注 神策数据成功签约借贷宝
  2. CodeIgniter中Router类的两个方法
  3. android构建过程
  4. python基础之python中if __name__ == '__main__': 的解析
  5. 悼念传奇,约翰询问#183;纳什和他的妻子艾丽西亚致敬,创建一个传奇,爱数学...
  6. Android Textview控件
  7. 数组的扩展-搜集自无忧脚本
  8. 网管员心声:Windows服务有“备”无患
  9. 数据战略和风险管理系统
  10. Self-reflection for career