HDU 5970 最大公约数
中文题
题意:
思路:
1、观察可得 模m的同余系和m的gcd都相同(这题多了一个c也是相同的)
2、由于取证所以不能用简单的用O(m^2)的做法,涉及到多1少1的
3、打表观察,例如i为模9为7的数 j为9
则i*j/f(i,j) 有这样的规律:
括号内为相邻值的差,而这个差是有循环节的,也就意味着,这可以看作4个等差数列。
又发现f(i,j)的c为4。
然后就大胆猜测c就是循环节。又试了几个数,果然是这样。
//不过很巧的是,循环节有一点小规律,但是没有仔细想,说不定可以有O(m^2)的做法
然后gcd的计算次数是log级别的,所以总的复杂度就是O(T*m^2*log(m))
//不过我的程序跑得不是很快。几乎是卡时间过的
具体细节看代码:
LL f(int x, int y, int& g, int& c)
{
c = ;
int t;
while (y)
{
c++;
t = x % y;
x = y;
y = t;
}
g = x;
return x * x * c;
} int n, m, p;
void init()
{
get_int(n);
get_int(m);
get_int(p);
} void solve()
{
int ans = , g, c;
for (int j = ; j <= m; j++)
{
for (int i = ; i <= j && i <= n; i++)
{
LL ff = f(i, j, g, c);
for (int k = ; k < c; k++)
{
if (i + k * j > n) break;
LL a0 = (i + k * j) * j / ff;
LL d = c * j * j / ff;
LL num = (n - (i + k * j)) / (c * j) + ;
ans = ((ans + a0 * num) % p + num * (num - ) / % p * d % p) % p;
}
}
}
printf("%d\n", ans);
} int main()
{
int T;
get_int(T);
while (T--)
{
init();
solve();
}
return ;
}
HDU 5970 最大公约数的更多相关文章
- HDU - 5970 题解
题目链接 HDU - 5970 分析 很显然\(f(x,y)\)与\(f(x+y*k,y)\)的结果相同,因为它们在第一次取模后会变成相同的式子 我们再看一下数据的范围,突破口肯定在\(m\)那里 那 ...
- HDU 1222 - Wolf and Rabbit & HDU 1108 - [最大公约数&最小公倍数]
水题,只是想借此记一下gcd函数的模板 #include<cstdio> int gcd(int m,int n){return n?gcd(n,m%n):m;} int main() { ...
- HDU 2504 又见GCD(最大公约数与最小公倍数变形题)
又见GCD Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
话不多说,日常一水题,水水更健康!┗|`O′|┛ 嗷~~ a/b + c/d Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768 ...
- hdu 4630 查询[L,R]区间内任意两个数的最大公约数
No Pain No Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 5656 CA Loves GCD(n个任选k个的最大公约数和)
CA Loves GCD Accepts: 64 Submissions: 535 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 2 ...
- HDU 1713 最小公倍数与最大公约数的问题 相遇周期
欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) 相遇周期 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/ ...
- HDOJ(HDU) 2504 又见GCD(利用最大公约数反推)
Problem Description 有三个正整数a,b,c(0 import java.util.Scanner; public class Main{ public static void ma ...
- HDOJ(HDU) 2503 a/b + c/d(最大公约数问题)
Problem Description 给你2个分数,求他们的和,并要求和为最简形式. Input 输入首先包含一个正整数T(T<=1000),表示有T组测试数据,然后是T行数据,每行包含四个正 ...
随机推荐
- RHEL6.4编译安装企业级LAMMP平台
一.LAMMP简介 二.使用软件及服务器架构说明 三.配置及安装过程 1.安装arp与httpd 2.安装mysql 3.安装php(php-fpm) 4.安装Xcache ...
- css3旋转
首先创建一个容器如div,然后设置其相关的3d属性,主要是三个1.perspective 透视,值越小3D感越强,值越大视觉正常.2.perspective-origin,透视点一般居于容器的中心.3 ...
- 一个Java递归删除目录的方法
public static void delDir(File f) { // 判断是否是一个目录, 不是的话跳过, 直接删除; 如果是一个目录, 先将其内容清空. if(f.isDirectory() ...
- Wen前端性能优化
Web前端性能优化 一般说来Web前端指网站业务逻辑之前的部分,包括浏览器加载.网站视图模型.图片服务.CDN服务等.主要优化手段有优化浏览器访问.使用反向代理.CDN等. 一.浏览器访问优化 减少h ...
- hightchart属性(更新中...)
legend:{ layout: 'vertical', //legend中内容垂直放置 align: 'right', //放在图表右边 verticalAlign: 'middle', // ...
- 史上最简单的socket
1. client import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import ja ...
- ios手写代码添加控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
- [解决方案] pythonchallenge level 1
http://www.pythonchallenge.com/pc/def/map.html g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amk ...
- 表前缀sw_时
操作效果一样
- IE6,IE7文档模式下 按钮type=submit在页面打开时会有一条黑线边框的处理方法。(转)
一:按钮border:none:同时使用背景图片来实现border效果. 二:在按钮外面嵌套一层label标签,里面的按钮input[type="submit"]的border:n ...