第十四届浙江财经大学程序设计竞赛重现赛-B题

https://www.nowcoder.com/acm/contest/89/B

可能最近,脑子有问题,看见数论题都是秒,学弟问我这题怎么做,结果我沉思了几分钟,居然秒了

首先题意是求[l,r]内与k互质的数的乘积%k的值。

首先我知道两个比较简单的结论

结论1.:gcd(a+k,k)=gcd(a,k)

没错这就是更相减损法,如果你不认识的话,那应该认识这个算法的优化算法——辗转相除法。就是经常用来求GCD的那个算法。

这个算法给出了的一个重要的结论就是与k的互质的数,是以k为周期出现的。因为若gcd(a,k)=1,则gcd(a+k,k)还是1,也就是a与a+k.都与k互质

结论2:a*(a+k)*(a+2k)……*(a+mk)%k=a^(m+1)%k

这个结论比较好证,首先把每项都%k,你就会发现其实就是 a*a*a*a*a……*a=a^(m+1)%k

题解思路

枚举[1,k-1]内每个与互质的数a,然后算a,a+k,a+2k,a+3k,……中有多少个数落在[l,r].这个比较好求我就不详细讲了,假设最后算出来是m个。

则a的贡献就是a^m%k.。然后把所有数的贡献累乘一下就行了。

不论你是怎么实现的,写得再搓复杂度一般也在k*log(n)以内

因为时间给的比较多,所以我没加任何优化,直接硬上就过了。

 #include <stdio.h>
#include<stack>
#include<algorithm>
using namespace std;
#define MAXN 2000005
#define MAX 0
using namespace std;
long long qpow(long long a,long long n,long long mod)
{
long long ans=;
while(n)
{
if(n&)
ans=ans*a%mod;
a=a*a%mod;
n>>=;
}
return ans;
}
int cal(long long l,long long r,int k)
{
int i;
long long ans=,m;
for(i=; i<k&&i<=r; i++)
{
if(__gcd(i,k)==)
{
m=(r+k-i)/k-(l+k-i-)/k;
ans=ans*qpow(i,m,k)%k;
}
}
return ans;
}
int main()
{
long long l,r,k;
int i,j,t,cas=;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld%lld",&l,&r,&k);
printf("Case #%d: ",cas++);
if(k==)
puts("");
else
printf("%d\n",cal(l,r,k)); }
return ;
}

Bazinga 题解的更多相关文章

  1. HDU 5510 Bazinga 暴力匹配加剪枝

    Bazinga Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5510 ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

随机推荐

  1. 为什么90%的IT人员都不适合做老大?

    什么是格局? 格局就是能够很好的平衡短期利益和长期利益. 过分注重短期利益的人必然会失去长期利益,到头来一定会很普通. 例如:跳槽不断,可能短期薪资会增长,但长期来看后劲可能会不足,未来发展空间会变窄 ...

  2. B - Sonya and Exhibition CodeForces - 1004B (思维题)

    B. Sonya and Exhibition time limit per test 1 second memory limit per test 256 megabytes input stand ...

  3. HttpRunnerManager 接口自动化测试平台 搭建实践

    一.需要准备的知识点 1. linux: 安装 python3.nginx 安装和配置.mysql 安装和配置 2. python: django 配置.uwsgi 配置 二.我搭建的环境 1. Ce ...

  4. Django权限管理系统设计分析

    权限管理顾名思义,其实就是角色控制权限的系统,每个用户对应一个角色,每个角色有对应的权限,比如公司会有CEO,总监,销售经理,销售员,每个人的权限都不一样,那我们给他展示的url也都不同 一.首先创建 ...

  5. python学习-- Django REST framework 序列化数据操作

    一.为什么要返回json数据? 一般来说前端要用到从后台返回的数据来渲染页面的时候,这时候后台就需要向前端返回json类型的数据,简单直观便于理解 ,就类似于 {"xxx":{[& ...

  6. Python 拓展之详解深拷贝和浅拷贝

    正式开始 首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要 ...

  7. linq本质扩展方法+lambda表达式

    string[] names = { "aa","bb","cc","dd"}; /* IEnumerable<s ...

  8. POJ-2159 最小费用最大流

                                                        Going Home 自己写的第一道费用流,图建好一波板子AC.不过还是有几个地方有点迷. 先来 ...

  9. 现代互联网的TCP拥塞控制(CC)算法评谈

    动机 写这篇文章本质上的动机是因为前天发了一个朋友圈,见最后的写在最后,但实际上,我早就想总结总结TCP拥塞控制算法点点滴滴了,上周总结了一张图,这周接着那些,写点文字. 前些天,Linux中国微信公 ...

  10. BZOJ3884 上帝与集合的正确用法 【欧拉定理】

    题目 对于100%的数据,T<=1000,p<=10^7 题解 来捉这道神题 欧拉定理的一般形式: \[a^{m} \equiv a^{m \mod \varphi(p) + [m \ge ...