【Foreign】光 [莫比乌斯反演]
光
Time Limit: 10 Sec Memory Limit: 128 MB
Description
天猫有一个长方形盒子,长宽分别为A,B。
这个长方形盒子的内壁全部是镜面。
天猫在这个盒子的左下方放了一个激光灯。
这个灯可以照向盒子内的任意角度。
现在天猫想要打开这个激光灯,但是他想让光线按照如下规则照射:
1.这束光必须恰好打到盒子边缘反射D次,并且不能碰到任意一个角落(除了出发点以及结束点)。
2.这束光必须到达盒子右上角,并且结束反射。
天猫想要知道,所有合法的光线路线的长度平方和是多少。
作为一个资深OIer,你应该知道输出要对10^9+7取模。
Input
一行三个数,表示A、B、D。
Output
一个数,表示路径平方和。
Sample Input
Sample Output
HINT
D<=10^9, A,B<=10^6
Solution
首先,我们注意到若一束光在一个平面反射,相当于镜面一侧的物体对称到镜面另一侧,而光线穿过镜面照到物体成的虚像上。
所以,我们可以认为:有一个D∗D的网格,需要在这个网格上面找到一点(x,y),要满足x+y−2 = D,这样的话,我们把(0,0)与(x,y)连接起来,连线所经过的网格边就是镜面反射时经过的边。也就是说,任意的合法方案与整数对(x,y)是一一对应的。
注意,由于在反射过程中,不能碰到网格的角落,所以应该满足(0,0)与(x,y)连线上没有其他整点,也就是gcd(x,y)=1,即gcd(x,D+2)=1。
然后用莫比乌斯反演推一波式子,最后发现要用暴力解决qaq。

Code
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<bitset>
using namespace std;
typedef long long s64; const int ONE = ;
const int MOD = 1e9 + ;
const int Niyu = ; s64 A, B, D;
int P[ONE],num;
int vis[ONE];
s64 Ans; int get()
{
int res=,Q=;char c;
while( (c=getchar())< || c> )
if(c=='-')Q=-;
res=c-;
while( (c=getchar())>= && c<= )
res=res*+c-;
return res*Q;
} void Factor(int x)
{
for(int i=; i*i<=x; i++)
if(x % i == )
{
P[++num] = i;
while(x % i == ) x /= i;
}
if(x != ) P[++num] = x;
} int Calc(int n)
{
return (s64)n * (n+) % MOD * (*n+) % MOD * Niyu % MOD;
} void Deal()
{
int d = , N = ;
for(int i=; i<=num; i++)
if(vis[i]) d = (s64)d * P[i] % MOD ,N++;
N = N & ? MOD- : ;
Ans = Ans + (s64)N % MOD * d % MOD * d % MOD * Calc((D+) / d) % MOD,
Ans %= MOD;
} void Dfs(int T)
{
if(T > num) {Deal(); return;}
vis[T] = ; Dfs(T+);
vis[T] = ; Dfs(T+);
} int main()
{
cin>>A>>B>>D;
if(D & ) {printf(""); return ;}
Factor(D + );
Dfs();
printf("%d", (s64)(A * A % MOD + B * B % MOD) % MOD * Ans % MOD);
}
【Foreign】光 [莫比乌斯反演]的更多相关文章
- hdu1695 GCD(莫比乌斯反演)
题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...
- BZOJ 2154: Crash的数字表格 [莫比乌斯反演]
2154: Crash的数字表格 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2924 Solved: 1091[Submit][Status][ ...
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
- Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)
题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...
- 莫比乌斯函数筛法 & 莫比乌斯反演
模板: int p[MAXN],pcnt=0,mu[MAXN]; bool notp[MAXN]; void shai(int n){ mu[1]=1; for(int i=2;i<=n;++i ...
- 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2371 Solved: 1143[Submit][Sta ...
- POI2007_zap 莫比乌斯反演
题意:http://hzwer.com/4205.html 同hdu1695 #include <iostream> #include <cstring> #include & ...
- hdu.5212.Code(莫比乌斯反演 && 埃氏筛)
Code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
- CSU 1325 莫比乌斯反演
题目大意: 一.有多少个有序数对(x,y)满足1<=x<=A,1<=y<=B,并且gcd(x,y)为p的一个约数: 二.有多少个有序数对(x,y)满足1<=x<=A ...
随机推荐
- 用URL传参带特殊字符,特殊字符丢失
文章:URL中编码URL特殊字符 文章:用URL传参带特殊字符,特殊字符丢失(encode) 如果url中有特殊字符,需要对url进行编码,否则特殊字符丢失,导致最终接收到的值不对.
- SOA是什么为什么要面向服务编程
SOA(面向服务的架构),Service-Oriented Architecture,面向服务的体系结构. 也就是以服务为核心的架构.这里需要理解什么是服务. 比如你有一个读取通知的方法: publi ...
- TCP系列23—重传—13、RACK重传
一.RACK概述 RACK(Recent ACKnowledgment)是一种新的基于时间的丢包探测算法,RACK的目的是取代传统的基于dupthresh门限的各种快速重传及其变种.前面介绍的各种基于 ...
- KindEditor是一套很方便的html编译器插件
KindEditor是一套很方便的html编译器插件.在这里做一个简单的使用介绍. 首先在官网上下载最新的KindEditor文件(里面有jsp,asp等不同版本文件夹,可以删掉你不需要的版本), 把 ...
- netem设置了网卡的流量控制,为啥发包的延迟就搞不定呢?
为啥我用netem做了一个流量的控制 但是发送的时候,感觉真正发送数据的时候还是没有达到每一个数据包都是1s的延迟呀,这里的1s的延迟是啥意思啊? 这里的delay并不是说每个数据包都delay 5s ...
- SpringBoot2.0(三) 文件上传
SpringBoot中发起文件上传示例: /** * 文件上传 * @param multipartFile * @param path * @return */ @RequestMapping(va ...
- Ajax在jQuery中的应用(加载异步数据、请求服务器数据)
加载异步数据 jQuery中的load()方法 load(url,[data],[callback]) url:被加载的页面地址 [data]:可选项表示发送到服务器的数据,其格式为 key/valu ...
- 【Asp.Net】IIS应用程序池添加ASP.NET v4.0
可能在安装.NET Framewrok 4.0之前,IIS就已经装好了,结果在IIS的应用程序池中只有.NET 2.0的Classic .NET AppPool和DefaultAppPool.在使用v ...
- filter过滤器 默认情况下只对客户端发来的请求有过滤作用 对服务端的跳转不起作用 需要显示的在xml定义过滤的方式才行
filter过滤器 默认情况下只对客户端发来的请求有过滤作用 对服务端的跳转不起作用 需要显示的在xml定义过滤的方式才行
- cf Round 587
A.Duff and Weight Lifting(思维) 显然题目中只有一种情况可以合并 2^a+2^a=2^(a+1).我们把给出的mi排序一下,模拟合并操作即可. # include <c ...