【JZOJ2700】【GDKOI2012模拟02.01】数字
来源:互联网 发布:网络机顶刷机软件下载 编辑:程序博客网 时间:2024/06/05 13:24
Description
Data Constraint
Solution
比赛时离正解就差一步……
我们打个表找找规律后发现:X*D(X)=i *i+9 *i *k,i∈[1,9],那么对于一个询问,我们可以通过枚举i来确定k的最大值计算数量。对于询问[l,r]我们可以用[1,r]-[1,l-1]来解决。
问题来了:一个x*d(x)可能在不同的i中出现(如125*d(125)=1000*d(1000))如何去重?
我们考虑
若满足
Code
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#define ll long longusing namespace std;const int maxn=1e7+5;ll test,n,m,i,t,j,k,l,x,y,z,ans; ll gcd(ll x,ll y){ ll r=x%y; while (r) x=y,y=r,r=x%y; return y;}int main(){// freopen("data.in","r",stdin); scanf("%lld",&test); for (;test;test--){ scanf("%lld%lld",&m,&n);m--;ans=0; for (i=1;i<=9;i++){ if (i*i>n) break; t=(n-i*i)/(9*i)+1; ans+=t; if (i<=4 && (9-i)*(9-i)<=n){ k=(9-i)/gcd(i,9-i); ans-=t/k; } } for (i=1;i<=9;i++){ if (i*i>m) break; t=(m-i*i)/(9*i)+1; ans-=t; if (i<=4 && (9-i)*(9-i)<=m){ k=(9-i)/gcd(i,9-i); ans+=t/k; } } printf("%lld\n",ans); }}
阅读全文
1 0
- 【JZOJ2700】【GDKOI2012模拟02.01】数字
- 【GDKOI2012模拟02.01】矩阵
- 【GDKOI2012模拟02.01】数字(找规律&&数论)
- 【JZOJ2701】【GDKOI2012模拟02.01】矩阵
- 【JZOJ2702】【GDKOI2012模拟02.01】探险
- 【GDKOI2012模拟02.01】探险(最短路&&SPFA)
- 模拟 模拟/ 数字转换(ADC)
- 数字地模拟地
- 模拟地 数字地
- 模拟数字电子知识
- 模拟地&数字地
- 模拟猜数字游戏
- 模拟数字显示管
- 选数字 问题模拟
- 模拟数字小时钟
- 【GDOI模拟】数字方阵
- NOIP模拟题:数字
- 数字河(模拟)
- 【Gridlayout网格布局,Framlayout帧布局】
- HTML学习笔记:WEB表单简单示例与表格化的表单
- Java三目运算符的一些冷知识
- tile2unity
- iOS 二维码简介
- 【JZOJ2700】【GDKOI2012模拟02.01】数字
- 【SDOI2011】黑白棋(Nim游戏&&DP)
- 在纪中的第九天,2017-7-15 总结:
- rpm -ivh createrepo-0.9.9-24.el6.noarch.rpm 报错解决
- 【JZOJ 5229】【GDOI2018模拟7.14】小奇的糖果
- CSS之responsive image gallery
- PAT1018~~~
- windows之关闭thinkpad的默认fn功能键
- 相比IPV4,IPV6有什么优点