CF963
CF963C
首先假设横向被分成p块纵向被分成q块,\(C_i\)为横向长度为\(i\)的方块个数,\(D_i\)为纵向长度为\(i\)的方块个数
\(p\times q=\)总块数T,q要是所有\(C_i\)的gcd的因数,p是所有\(D_i\)的gcd的因数
然后随手一交发现不对,比如\(1\times 1=2, 1\times 2=1, 2\times 1=1, 2\times 2=2\)
设长x宽y的块有\(w_{x,y}\)个,这就要求对于制定的长x\(w_{x,1}:w_{x,2}:\cdot \cdot \cdot :w{x,k}=D_1:D_2:\cdot \cdot \cdot :D{k}\)
冷静分析一下就是\(\frac{w_{x,y}}{C_x}=\frac{D_y}{T}\)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
#include<cmath>
#define LL long long
#define LD long double
using namespace std;
const int M = 1000001;
map<LL,LL>mg,mh;
LL T,n,m,k,x,y,c,G,H,res,a[M],b[M],d[M];
LL gcd(LL x,LL y)
{
if(!y) return x;
return gcd(y,x%y);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>y>>c;
if(mg.find(x)==mg.end()) mg[x]=0;
if(mh.find(y)==mh.end()) mh[y]=0;
mg[x]+=c; mh[y]+=c;
T+=c;
a[i]=x, b[i]=y, d[i]=c;
}
map<LL,LL>::iterator it;
it=mg.begin();
while(it!=mg.end()) G=gcd(G,it->second),it++;
it=mh.begin();
while(it!=mh.end()) H=gcd(H,it->second),it++;
for(int i=1;i<=n;i++)
{
if(fabs((LD)d[i]/mg[a[i]]-(LD)mh[b[i]]/T)>1e-10)
{
printf("0");
return 0;
}
}
if(H<G) swap(H,G);
LL k=sqrt(G);
for(int i=1;i<=k;i++) if(G%i==0)
{
if(T%i==0 && H%(T/i)==0) res+=1ll;
if(i*i!=G && T%(G/i)==0 && H%(T/(G/i))==0) res+=1ll;
}
cout<<res;
}
CF963的更多相关文章
随机推荐
- 关于array_merge()的注意
array_merge() 函数把两个或多个数组合并为一个数组. 1 如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的). 2 如果数组是数字索引的,则键名会以连续方式重新索引. 2 ...
- Java常用的几个Json库,性能强势对比!
作者:飞污熊 https://xncoding.com/2018/01/09/java/jsons.html 本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能.每次都在网上看到别人说什 ...
- Git的安装配置
Git是什么 Git是一款免费.开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 与常用的版本控制工具CVS.Subversion等不同的是它采用了分布式版本库的方式,不必 ...
- IE的debug工具对程序进行debug跟踪JS代码
2015/8/31 (其他的:显示zjfy_app_sys_ip.html,只需关闭启用保护模式) 显示ie的debug,F12-->Ctrl + P 扩展:第一步,在程序中设置断点,如图所示左 ...
- 设计模式--简单工厂(Simple Factory)
工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式.本篇是是工厂方法模式的“小弟”,我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式,但在软件开发中却也应 ...
- 简易的富文本编辑器WangEditor
网址http://www.wangeditor.com/ var E = window.wangEditor; var editor = new E('#editor') // 或者 var edit ...
- 力扣 -- 寻找两个有序数组的中位数 Median of Two Sorted Arrays python实现
题目描述: 中文: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums ...
- iOS项目开发中的知识点与问题收集整理②
1.点击UIButton 无法产生触摸事件 如果在UIImageView中添加了一个按钮,你会发现在默认情况下这个按钮是无法被点击的,需要设置UIImageView的userInteractio ...
- vue-cli创建的项目中引入第三方库报错'caller', 'calle', and 'arguments' properties may not be...
本文链接:https://blog.csdn.net/Sophie_U/article/details/76223978 问题: 在vue的main.js中引入mui.min.js时,报错. 如上,单 ...
- beautifhulsoup4的使用
Beautiful: - 基本使用 from bs4 import BeautifulSoup - 解析器: lxml, html.parser soup = Beautiful ...