HDU
来源:互联网 发布:json.parse解析不了 编辑:程序博客网 时间:2024/06/05 16:35
Description
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.
Two integers are said to be co-prime or relatively prime if they have no common positive divisors other than 1 or, equivalently, if their greatest common divisor is 1. The number 1 is relatively prime to every integer.
Input
The first line on input contains T (0 < T <= 100) the number of test cases, each of the next T lines contains three integers A, B, N where (1 <= A <= B <= 10 15) and (1 <=N <= 10 9).
Output
For each test case, print the number of integers between A and B inclusive which are relatively prime to N. Follow the output format below.
Sample Input
2
1 10 2
3 15 5
Sample Output
Case #1: 5
Case #2: 10
Hint
题意
问【a,b】区间内与n互质的数的数目
题解:
容斥定理 + 分解质因子
AC代码
#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>typedef long long LL;using namespace std;vector<LL > yinzi;void fj(LL n){ yinzi.clear(); for (LL i = 2; i*i <= n; ++i){ if (n%i==0){ yinzi.push_back(i); while (n%i==0) n/=i; } } if (n>1) yinzi.push_back(n); return ;}LL ronc(LL a,LL b){ LL res = 0; for (LL i = a; i < yinzi.size(); ++i){ res += b/yinzi[i]-ronc(i+1,b/yinzi[i]); } return res;}int main(){ int t; scanf("%d",&t); int kase = 1; while (t--){ LL a,b; int n; scanf("%lld%lld%d",&a,&b,&n); fj(n); LL ans = 0; LL l = a-1 - ronc(0,a-1);/*注意不要把a漏了 不是a-1的话 如果a和n互质 那么答案就会少1*/ LL r = b - ronc(0,b); ans = r-l; /* LL l = a - ronc(0,a); LL r = b - ronc(0,b); ans = r-l; if (gcd(a,n)==1) ans+=1; //再加个gcd函数 此注释内可与上面的替换 道理都一样 */ printf("Case #%d: %lld\n",kase++,ans); } return 0;}
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 低功耗蓝牙cc2541学习笔记之UART-2-驱动uart
- C++ Socket编程(二) send与recv 缓冲区与阻塞
- 面向对象思想
- XYNU OJ 1060—1069基础题(适合于C语言初学者)
- 面向对象定义类或者接口
- HDU
- THREE.JS场景基本组件(一)
- HTTP长连接---requests的长连接
- 基于Hive的hadoop集群搭建详细解说
- 【《Real-Time Rendering 3rd》 提炼总结】(六) 第七章 · 高级着色:BRDF及相关技术
- HPU C
- CentOS之Java安装-yellowcong
- 32位和64位
- 利用datetime进行日期获取,比如前100天的日期