【CF819C】Mister B and Beacons on Field

题意:外星人盯上了Farmer Jack的农场!我们假设FJ的农场是一个二维直角坐标系,FJ的家在原点。外星人向FJ的农场上投放了3个信标,不幸的是,有一个信标落地就完全损坏了,且不知道具体位置,其余两个信标分别被投放到了 $(m,0)​$ 和 $(0,n)$ 处。

FJ对这些新的金闪闪的东西很感兴趣,他决定将这两个信标搬到家里去。具体地,FJ先从 $(0,0)$ 沿着 $x$ 轴走到 $(m,0)$ ,捡起信标,然后沿着 $x$ 轴返回 $(0,0)$ ,把信标放到家中。再从 $(0,0)$ 沿着 $y$ 轴走到 $(0,n)$ ,捡起信标,然后沿着 $y$ 轴返回 $(0,0)$ ,把信标放到家中。

然而那两个没有损坏的信标在一直与外星人保持联系,它们一直在试图寻找那个损坏的信标的位置。具体地,当两个未损坏的信标的坐标都是整数时,如果存在平面上的一个整点,满足这个点与两个未损坏的信标组成的三角形面积为 $s$ ,则两个信标会向外星人发送一次信息。现在外星人想知道,在搬运的整个过程中,这两个信标一共会向外星人发送多少次信息?

t组数据,$n=n_1\cdot n_2\cdot n_3$,$m,s$同理,$n_1,n_2,n_3...\le 10^6$

题解:先s*=2,然后分成两段考虑:

从 $(n,0)$ 到 $(0,0)$ :因为这段简单就先考虑这段。如果当前走到 $(0,i)$ ,显然$i|s$就好了,所以枚举s的所有$\le n$约数即可。

从 $(m,0)$ 到 $(0,0)$ :考虑将面积转化成叉积的形式。如果当前走到 $(i,0)$ ,就变成问你$i\cdot y+(x-i)n=s$有没有整数解。根据裴蜀定理这个东西有整数解当且仅当$gcd(i,n)|s$。然后考虑容斥,如果$d=gcd(i,n)\nmid s$,则d中至少有一个质因子的系数大于s对应项的系数。所以答案等于至少0项的-至少1项的+至少2项的。。。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
ll n,m,s,ans;
int tot;
int pn[60],pm[60],ps[60],pri[60];
ll xp[60];
int vis[1000010];
inline void solve(int *cnt,int x)
{
for(int i=2;i*i<=x;i++) if(x%i==0)
{
if(!vis[i]) vis[i]=++tot,pri[tot]=i;
while(x%i==0) x/=i,cnt[vis[i]]++;
}
if(x>1)
{
if(!vis[x]) vis[x]=++tot,pri[tot]=x;
cnt[vis[x]]++;
}
}
inline void init()
{
memset(pn,0,sizeof(pn)),memset(pm,0,sizeof(pm)),memset(ps,0,sizeof(ps));
for(int i=1;i<=tot;i++) vis[pri[i]]=0;
}
void dfs1(int x,ll now)
{
if(now>n) return ;
if(x>tot)
{
ans++;
return ;
}
dfs1(x+1,now);
for(int i=1;i<=ps[x];i++) dfs1(x+1,now*=pri[x]);
}
void dfs2(int x,ll now,int flag)
{
if(now>m) return ;
if(x>tot)
{
ans+=flag*(m/now);
return ;
}
dfs2(x+1,now,flag);
if(pn[x]>ps[x]) dfs2(x+1,now*xp[x]*pri[x],-flag);
}
inline void work()
{
int t;
n=m=s=1,ans=tot=0;
scanf("%d",&t),solve(pn,t),n*=t,scanf("%d",&t),solve(pn,t),n*=t,scanf("%d",&t),solve(pn,t),n*=t;
scanf("%d",&t),solve(pm,t),m*=t,scanf("%d",&t),solve(pm,t),m*=t,scanf("%d",&t),solve(pm,t),m*=t;
scanf("%d",&t),solve(ps,t),s*=t,scanf("%d",&t),solve(ps,t),s*=t,scanf("%d",&t),solve(ps,t),s*=t;
solve(ps,2),s<<=1;
dfs1(1,1);
for(int i=1,j;i<=tot;i++) for(j=xp[i]=1;j<=ps[i];j++) xp[i]*=pri[i];
dfs2(1,1,1);
printf("%lld\n",ans);
init();
}
int main()
{
freopen("beacon.in","r",stdin);
freopen("beacon.out","w",stdout);
int T;
scanf("%d",&T);
while(T--) work();
return 0;
}//1 10 6 18 2 103 2 13 1 13

【CF819C】Mister B and Beacons on Field 数学的更多相关文章

  1. Codeforces Round #280 (Div. 2) E. Vanya and Field 数学

    E. Vanya and Field Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/492/pr ...

  2. Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学

    题目链接 题意:给你三个数n,m,k;让你构造出一个nm的矩阵,矩阵元素只有两个值(1,-1),且满足每行每列的乘积为k,问你多少个矩阵. 解法:首先,如果n,m奇偶不同,且k=-1时,必然无解: 设 ...

  3. codeforces round 421 div2 补题 CF 820 A-E

    A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef lon ...

  4. Codeforces Round #421 (Div. 1) (BC)

    1. 819B Mister B and PR Shifts 大意: 给定排列$p$, 定义排列$p$的特征值为$\sum |p_i-i|$, 可以循环右移任意位, 求最小特征值和对应移动次数. 右移 ...

  5. 【CF492E】【数学】Vanya and Field

    Vanya decided to walk in the field of size n × n cells. The field contains m apple trees, the i-th a ...

  6. MIT牛人解说数学体系

    https://www.douban.com/group/topic/11115261/ 在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进. 为什 ...

  7. 【zz】MIT牛人解说数学体系

    作者:林达华 一.为什么要深入数学的世界 作为计算机的学生,我(原作者)没有任何企图要成为一个数学家.我学习数学的目 的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些. ...

  8. [中英双语] 数学缩写列表 (List of mathematical abbreviations)

    List of mathematical abbreviations From Wikipedia, the free encyclopedia 数学缩写列表 维基百科,自由的百科全书 This ar ...

  9. MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

随机推荐

  1. python怎么写可读性好的面向过程的长篇代码?

    最近接受老代码,mmp的,说是重新运行运行起来,那还不如重写呢,因为有很多毛病,不能直接运行,pep8就不用妄想奢望了,还有包括语法错误问题和内存严重泄露的问题(运行几分钟后python.exe进程达 ...

  2. python mysql 封装

    封装 观察前面的文件发现,除了sql语句及参数不同,其它语句都是一样的 创建MysqlHelper.py文件,定义类 #encoding=utf8 import MySQLdb class Mysql ...

  3. Java把数字格式化为货币字符串

    数字可以标志货币.百分比.积分和电话号码等,就货币而言,在不同的国家会以不同的格式来定义,本实例将接收用户输入的数字,然后在控制台中输出其货币格式,其中使用了不同国家的货币格式. 思路如下:使用Num ...

  4. 开启apache的server-status辅助分析工具

    在Apache的调优过程中,可以通过查看Apache提供的server-status(状态报告)来验证当前所设置数值是否合理,在httpd.conf文件中做如下设置来打开: #加载mod_status ...

  5. SpringMVC由浅入深day02_1课程安排_2包装类型pojo参数绑定_3集合类型绑定

    springmvc第二天 高级知识 复习: springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器: ...

  6. 8 -- 深入使用Spring -- 3...3 使用Resouce作为属性

    8.3.3 使用Resouce作为属性 当应用程序中的Bean实例需要访问资源时,Spring可以直接利用依赖注入. 如果Bean实例需要访问资源,有如下两种解决方案: ⊙ 在代码中获取Resourc ...

  7. [转]PHP判断字符串是纯英文、纯汉字或汉英混合(GBK)

    PHP判断字符串是否为中文(或英文)的方法,除了正则表达式判断和拆分字符判断字符的值是否小于128 外还有一种比较特别的方法. 使用php中的mb_strlen和strlen函数判断 方法比较简单:分 ...

  8. 如何在windows上测试iphone?

    本教程将会让你没有mac照样测试iphone,这是我折腾了几天总结下来的,希望对大家有用. 先来几张效果图吧 方法很简单,但是配置起来说实话有点麻烦,先在电脑上安装vmware,在安装osx系统,在安 ...

  9. swift--歌曲播放示例

    使用MPMoviePlayerController我们可以是进行音乐播放,如下图: 接口的话,我是自己在本地上搭建了个服务器,自己请求自己

  10. 使用tinyproxy搭建http代理

    一.前言   二.搭建环境 * Linux laptop 2.6.32-45-generic #100-Ubuntu SMP Wed Nov 14 10:41:11 UTC 2012 i686 GNU ...