中文题

题意:

思路:

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 最大公约数的更多相关文章

  1. HDU - 5970 题解

    题目链接 HDU - 5970 分析 很显然\(f(x,y)\)与\(f(x+y*k,y)\)的结果相同,因为它们在第一次取模后会变成相同的式子 我们再看一下数据的范围,突破口肯定在\(m\)那里 那 ...

  2. 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() { ...

  3. HDU 2504 又见GCD(最大公约数与最小公倍数变形题)

    又见GCD Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  4. HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)

    话不多说,日常一水题,水水更健康!┗|`O′|┛ 嗷~~ a/b + c/d Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768 ...

  5. hdu 4630 查询[L,R]区间内任意两个数的最大公约数

    No Pain No Game Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. hdu 5656 CA Loves GCD(n个任选k个的最大公约数和)

    CA Loves GCD  Accepts: 64  Submissions: 535  Time Limit: 6000/3000 MS (Java/Others)  Memory Limit: 2 ...

  7. HDU 1713 最小公倍数与最大公约数的问题 相遇周期

    欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) 相遇周期 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/ ...

  8. HDOJ(HDU) 2504 又见GCD(利用最大公约数反推)

    Problem Description 有三个正整数a,b,c(0 import java.util.Scanner; public class Main{ public static void ma ...

  9. HDOJ(HDU) 2503 a/b + c/d(最大公约数问题)

    Problem Description 给你2个分数,求他们的和,并要求和为最简形式. Input 输入首先包含一个正整数T(T<=1000),表示有T组测试数据,然后是T行数据,每行包含四个正 ...

随机推荐

  1. windows 开机启动 CassiniDev(IIS替代软件)

    CassiniDev(IIS替代软件) 使用asp.net的时候,要部署一个iis,或者部署iis express,有时候你嫌麻烦, 这是一个替代品. 功能完全的. 下载地址:http://cassi ...

  2. Entity Framework Linq 动态组合where条件

    public static class PredicateExtensions { public static Expression<Func<T, bool>> True&l ...

  3. java基础知识--CLASSPATH

    如果在一个类中用到了另外一个类(new了一个新对象). package com.xxx.xxx; public class Cat { } //下面是另外的文件 public class Dog { ...

  4. jquery中的children()和contents()的区别

    1.children()只会返回元素节点 2.contents()还可以返回文本节点

  5. popen使用不当引起产生僵尸进程

    FILE * popen(const char * command, const char * type)popen函数会通过fork产生子进程,然后从子进程中调用/bin/sh -c执行参数comm ...

  6. Qt中文乱码解决思路

    最近项目中遇到不少的Qt中文乱码的问题,主要原因是客户的需求比较多,Qt版本有用4的版本的也有用5的版本,并且还有windows与linux跨平台的需求.经常出现个问题是windows的解决了,源代码 ...

  7. mac上spacemacs体验小记

    project: blog target: note-of-spacemacs-on-mac.md date: 2016-01-04 status: publish tags: - emacs - s ...

  8. c# 远程连接ORACLE数据库

    使用该方法,只需要传入几个必要的参数就可以进行数据库的远程连接测试了,连接成功返回TRUE,失败返回false. 说明: 第一个参数表示你在数据库中的用户,具有可以登录权限的 第二个参数表示用户的密码 ...

  9. 结构及其使用 struct (C#)

    首先结构是值类型. 结构是使用 struct 关键字定义的,结构如下: struct 结构名{} 结构概述 结构具有以下特点: 结构是值类型,而类是引用类型. (结构不能包含显式的无参数构造函数) 与 ...

  10. software_testing_work3_question1

    package com.Phantom; import java.io.IOException; import java.util.Scanner; public class Work3_1 { /* ...