HDU 1695(容斥+欧拉函数+素数分解)
来源:互联网 发布:新浪云服务器的sql 编辑:程序博客网 时间:2024/05/11 19:31
hdu 1695
题目大意:
求
思路:
令
#include <iostream>#include <cstdio>#define LL __int64#define N 100002using namespace std;LL euler[N];struct Num{ int prim[20]; int num;}c[N];void init_Euler() //euler打表+素数分解{ for (int i = 0; i < N; i++) { c[i].num = 0; euler[i] = 0; } euler[1] = 1; for (int i = 2; i < N; i++) { if (!euler[i]) { for (int j = i; j < N; j += i) { if (!euler[j]) { euler[j] = j; } euler[j] = euler[j] / i * (i - 1); c[j].prim[c[j].num] = i; c[j].num++; } } euler[i] += euler[i-1]; }}LL get_ans(int pi, LL n) //枚举版{ LL ans = 0; for (int i = 1; i < (1 << c[pi].num); i++) { int tmp = 1, flag = 0; for (int j = 0; j < c[pi].num; j++) { if (i & (1 << j)) { flag++; tmp *= c[pi].prim[j]; } } if (flag & 1) { ans += n / tmp; } else { ans -= n / tmp; } } return ans;}LL dfs(int index, LL b, LL n) //递归版{ LL ans = 0, t; for (int i = index; i < c[n].num; i++) { t = b / c[n].prim[i]; ans += t - dfs(i + 1, t, n); } return ans;}int main(){ int T; init_Euler(); while (~scanf("%d", &T)) { for (int cas = 1; cas <= T; cas++) { int a, c; LL b, d, k; scanf("%d%I64d%d%I64d%I64d", &a, &b, &c, &d, &k); if (k == 0) { printf("Case %d: 0\n", cas); continue; } if (b > d) { swap(b, d); } LL tmp = b / k; LL ans = euler[tmp]; if (b == d) { printf("Case %d: %I64d\n", cas, ans); continue; } b /= k; d /= k; for (int i = b + 1; i <= d; i++) { // ans += b - get_ans(i, b); ans += b - dfs(0, b, i); } printf("Case %d: %I64d\n", cas, ans); } } return 0;}
0 0
- HDU 1695(容斥+欧拉函数+素数分解)
- HDU 1695 GCD 【容斥】【质因数分解】【欧拉函数】
- hdu 1695 综合数论 欧拉函数 分解质因子 容斥原理 打印素数表 帅呆了的一个题目 详解
- HDU 1695 GCD(素因子分解+容斥原理+欧拉函数)
- HDU 1695 GCD 欧拉函数+容斥原理+质因数分解
- hdu 1695 GCD (欧拉函数+容斥原理+素因子分解)
- HDU 1695 GCD (数论-整数和素数,欧拉函数,组合数学-容斥原理)
- hdu GCD 【欧拉函数,素因子分解,筛选法,容斥原理】
- hdu1695 综合数论 欧拉函数 分解质因子 容斥原理 打印素数表 各种模板
- HDU/HDOJ 1695 GCD 欧拉函数+容斥原理
- HDU 1695 欧拉函数+容斥原理
- HDU 1695 GCD 欧拉函数+容斥原理
- Hdu 1695 GCD - 欧拉函数 + 容斥
- hdu 1695(GCD) 容斥+欧拉函数
- hdu 1695 GCD 欧拉函数+容斥原理
- HDU 1695 GCD(欧拉函数+容斥原理)
- hdu 1695 GCD(容斥原理+欧拉函数)
- hdu 1695 GCD(欧拉函数+容斥原理)
- 安卓输入框实现电话号码"344"格式
- 一些Ubuntu下的显示设置方法
- 最长公共子序列的长度和输出/HDU1159
- 1005. Spell It Right
- 训练赛20160406_华中OJ
- HDU 1695(容斥+欧拉函数+素数分解)
- Liunx 搜索命令
- 自己动手写操作系统之1:bochs初步使用
- Android-Proguard代码混淆
- leetcode之Power of Two
- document.ready和onload的区别——JavaScript文档加载完成的那点事儿
- 斐波那契数列
- Java中关于getInstance方法的阐述
- asp 为 datalist 添加 增删改 事件