hdu 4235 容斥原理模板题
题目大意:
输入样例个数T,每个样例输入三个数a,b,n,求[a,b]之间与n互素的个数
基本思路:
互斥,想想这个:AUBUC=A+B+C-A∩B-A∩C-B∩C+A∩B∩C
fac存的是n的素因数que里存的是素因数的乘机以及符号,然后最后n/que得出的就是最后和n非互素的个数
代码如下:
#include<cstdio>
#include<cstdlib>
#include<cstring> using namespace std; typedef long long ll;
const int maxn = 1000000+10;
ll que[maxn],fac[maxn],num; void divid(ll n)
{
num=0;
for(ll i=2;i*i<=n;i++)
{
if(n%i==0)
{
while(n%i==0) n/=i;
fac[num++]=i;
}
}
if(n!=1) fac[num++]=n;
}
ll solve(ll n)
{
int k,t=0;
ll ans=0;
que[t++]=-1;
for(ll i=0;i<num;i++)
{
k=t;
for(ll j=0;j<k;j++)
{
que[t++]=-1*que[j]*fac[i];
}
}
for(ll i=1;i<t;i++) ans+=n/que[i];
return ans;
} int main()
{
int T;
scanf("%d",&T);
int cas=0;
while(T--)
{
ll a,b,n;
scanf("%I64d%I64d%I64d",&a,&b,&n);
divid(n);
ll res=b-solve(b)-(a-1-solve(a-1));
printf("Case #%d: %I64d\n",++cas,res);
}
return 0;
}
hdu 4235 容斥原理模板题的更多相关文章
- HDU 2138 Miller-Rabin 模板题
求素数个数. /** @Date : 2017-09-18 23:05:15 * @FileName: HDU 2138 miller-rabin 模板.cpp * @Platform: Window ...
- HDU 2586 (LCA模板题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2586 题目大意:在一个无向树上,求一条链权和. 解题思路: 0 | 1 / \ 2 3 ...
- HDU 1392 凸包模板题,求凸包周长
1.HDU 1392 Surround the Trees 2.题意:就是求凸包周长 3.总结:第一次做计算几何,没办法,还是看了大牛的博客 #include<iostream> #inc ...
- HDU 2082 母函数模板题
找单词 Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status De ...
- HDU 2087 kmp模板题
s为主串 t为模板串 求t的nextt 加const #include<stdio.h> #include<string.h> #include<algorithm> ...
- 【网络流#3】hdu 1532 - Dinic模板题
输入为m,n表示m条边,n个结点 记下来m行,每行三个数,x,y,c表示x到y的边流量最大为c 这道题的模板来自于网络 http://blog.csdn.net/sprintfwater/articl ...
- poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
poj 1251 && hdu 1301 Sample Input 9 //n 结点数A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E ...
- 最长回文 HDU - 3068 manacher 模板题
题意:找串的最长回文字串(连续) 题解:manacher版题 一些理解:首位加上任意两个字符是为了判断边界. 本算法主要是为了 1.省去奇偶分类讨论. 2.防止形如aaaaaaa的串使得暴力算法蜕化为 ...
- Saving Princess claire_(hdu 4308 bfs模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=4308 Saving Princess claire_ Time Limit: 2000/1000 MS (Jav ...
随机推荐
- BZOJ 1597: [Usaco2008 Mar]土地购买 动态规划 + 斜率优化
Code: #include<bits/stdc++.h> #define maxn 1000000 #define ll long long #define x(i) (b[i+1]) ...
- dijkstra求最小环
任意一个环的权值,我们都可以看成两个有边相连的结点i.j的直接距离加上i.j间不包含边(边i->j)的最短路径. 求最短路径我们第一个想到的就是Dijkstra算法. 而Dijkstra所求的是 ...
- C# windows窗口应用程序切换主界面的显示内容
不知道说清楚没有?就是我的窗口分为两部分,左边,控制部分,由一些按钮组成右边,显示部分,由些控件(如下拉,文本等等组成) 左边的每个按钮对应显示部分的页面,也就是说,左边换一个按钮点,那么右边就显示其 ...
- 学习日记5、easyui datetimebox 和combobox设置默认值
$('#PersonnelId').combobox("select","@Model.PersonnelId") $('#Birthday').datebox ...
- jQuery入门教程-文档操作方法
一.append()和appendTo() 1.1 append()方法 <body> <p>好好学习</p> <button>append() 方法& ...
- Flask学习 4 http方法
服务端端 #!/usr/bin/env python # encoding: utf-8 """ @version: v1.0 @author: cxa @file: f ...
- OC端代码
ViewController.m #import "ViewController.h"#import <Flutter/Flutter.h>#include " ...
- xiugai2
<div class="myLoading"> <div class="svg-wrap"> <svg width="8 ...
- 2019Hdu多校第三场:1007 Find the answer(multiset 解法)
原题链接: Find the answer c++中,multiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数 ...
- Kakuro Extension【最大流】
HDU-3338 这道题真的处理起来好复杂啊,题意就是个简单的方格填数问题,但是每个白点至少放1,那么最后的可能解是怎样的呢?我们是不是要把x轴上的和y轴上的统一起来,然后就是每个点都被对应的x和y匹 ...