有这样一个有关最大公约数的函数:
函数 f(x, y):

{
c=0
当 y>0:
{
c +=1
t = x % y
x = y
y = t
}
返回 c * x * x
}

给出三个正整数n,m,p,你需要计算:

∑i=1n∑j=1m⌊i∗jf(i,j)

对p取模的结果。

 #include <stdio.h>
#include <iostream>
#include <stack>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <cctype>
using namespace std;
typedef long long ll;
void in(int& n){scanf("%d",&n);}
void in(ll& n){scanf("%I64d",&n);}
const int N = ;
int gcd[N][N],num[N][N];
int n,m,p;
ll calc(ll x,ll y,ll tot,ll cnt)//tot 个数 cnt 分母
{
ll ans = (tot+)*(x*y)+(tot+)*tot/*(y*y);//总和
ll rd = y*y%cnt;
ll ra = y*x%cnt;
ll res = ; //余数
/*for(int i=0;i<=tot;++i){res+=(i*rd+ra)%cnt;}
return (ans-res)/cnt%p;
*/ //复杂度太高
for(int i=;i<cnt;++i){
res += (rd*i+ra)%cnt;
}
res = tot/cnt*res;
for(int i=;i<=tot%cnt;++i)
{
res += (rd*i+ra)%cnt;
}
return (ans-res)/cnt%p;
}
void init()
{
for(int i=;i<N;i++)
for(int j=;j<N;j++)
if(i==||j==) gcd[i][j]=i+j;
else if(i<j) gcd[i][j] = gcd[i][j%i];
else gcd[i][j] = gcd[i%j][j];
for(int i=;i<N;i++)
for(int j=;j<i;j++)
{
if(j==) num[i][j] = ;
else num[i][j] = num[j][i%j] +;
}
}
int main()
{
init();
int T;
scanf("%d",&T);
while(T--)
{
int ans = ;
scanf("%d%d%d",&n,&m,&p);
for(int i=;i<=m;i++)
for(int j=;j<i&&j<=n;j++)
{
ans+=calc(j/gcd[i][j],i/gcd[i][j],(n-j)/i,num[i][j]);
ans%=p;
}
printf("%d\n",ans);
}
return ;
}

AC代码

因为计算被m限制  变成了m个等差数列   求数列每一项/cnt 之和

但是  但是  裸计算余数复杂度太大

所以    就是现场  看懂了题。。。也A不掉。。。。然后贴的这个余数 转化为cnt的计算方式。。。

肯定是以cnt长度为循环。。。tot/cnt个循环 
余下的tot%cnt 再求一次即可

那么复杂度就降下来了

2016CCPC 合肥--最大公约数//每一年通向它的路上,多少人折戟沉沙,多少人功败垂成,有人一战成名,有人从头再来。的更多相关文章

  1. hdu 5963 朋友(2016ccpc 合肥站 C题)

    朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...

  2. hdu 5961 传递 (2016ccpc 合肥站 A题)

    传递 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  3. 吴奇隆刘诗诗婚礼场地:巴厘岛Ayana酒店,美到窒息!

    导读:忍不住转载一下,原文地址:http://www.sjq315.com/news/270768.html 3月20日,吴奇隆和刘诗诗在巴厘岛五星级酒店Ayana Resort and Spa酒店举 ...

  4. 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)

    转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...

  5. hdu 1577 WisKey的眼神 (数学几何)

    WisKey的眼神 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. sort 树 hash 排序

    STL 中 sort 函数用法简介 做 ACM 题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错. ST ...

  7. acm算法模板(5)

    STL 中 sort 函数用法简介 做 ACM 题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错. ST ...

  8. html中不要忽略一些细节

    1. img必备和可选的参数都有写了上了,但是必备参数里的一个值alt没写(其实一些大型的专业门户网站其实也是有存在一些小问题的,只要我们细心一 点就能发现).虽然这样alt不写,在页面中也不会有任何 ...

  9. 越狱Season 1-Episode 6: Riots, Drills and the Devil: Part 1

    Season 1, Episode 6: Riots, Drills and the Devil: Part 1 - Diamond: Just a few more rides. 就再多玩几次吧 O ...

随机推荐

  1. ldap实现用户认证

    LDAP的用户认证类. public class LDAPHelper { private DirectoryEntry _objDirectoryEntry; /// <summary> ...

  2. STL set使用例子

    #include<iostream>#include<set>using namespace std; #include<stdlib.h> #define ran ...

  3. c++学习--面向对象一实验

    实验内容 一 建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度.用类cylinder计算圆柱体的体积,并存储在一个double变量中.在类cyl ...

  4. C# CRC-CCITT (Kermit)校验方法

    using System; public enum Crc16Mode : ushort { Standard = 0xA001, CcittKermit = 0x8408 } public clas ...

  5. Chrome插件概览(一) – The basics

    转载http://lvjava.com/?p=582 原文见https://developer.chrome.com/extensions/overview.html Chrome Extension ...

  6. msChart组件安装与编程

    首先下载mschart.ocx文件,至于它所依赖的.net环境,网上有很多,本人下载的插件给出链接,http://www.cr173.com/soft/47300.html而它所依赖的环境可以从我的云 ...

  7. jQuery检测滚动条(scroll)是否到达底部

    一.jQuery检测浏览器window滚动条到达底部 jQuery获取位置和尺寸相关函数: $(document).height()    获取整个页面的高度 $(window).height()   ...

  8. sublime 工具构建

    1 Sublime Text 3 配置react语法校验 原文地址:https://segmentfault.com/a/1190000004369542?_ea=585496 终端安装 npm in ...

  9. gdb汇编调试

    GDB调试汇编堆栈分析 代码: sudo apt-get install libc6-dev-i386命令安装所需库 进入之后先在main函数处设置一个断点,再run一下,使用disassemble指 ...

  10. 用EXCEL内嵌的Visual Basic for Application 编程,通过 UGSimple USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据

    现在市场上有很多中USB-GPIB 控制器,或叫 USB 转GPIB链接线. 每种GPIB控制器都有它的 函数库(dll库).各种GPIB 控制器的价钱插别很大.这里以一种价钱较便宜的USB-GPIB ...