HDU 4944 FSF’s game(2014 Multi-University Training Contest 7)
思路: ans[n]= ans[n-1] + { (n,1),(n,2).....(n,n)} 现在任务 是 计算 { (n,1),(n,2).....(n,n)}(k=n的任意因子)
很明显 所有能取的k均为n的因子可以 sqrt(n) 内枚举。 若 p 为n的因子 那么 d(n,p) =p*p * {(n/p,1) ,(n/p,2) 。。。(n/p,n/p)}(后面这部分 k 取 1) 那么任务就转化成求 f(n) f(n)表示 {(n,1),(n,2) ....(n,n)}当k等于1时候的值。 k等于1 相当于 枚举每个因子 p 。。求 sum*n 这边的sum表示与n/p互质的所有数之和。 sum=phi(n/p)*n/p ;
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<time.h>
#include<string>
#define REP(i,n) for(int i=0;i<n;++i)
#define REP1(i,a,b) for(int i=a;i<=b;++i)
#define REP2(i,a,b) for(int i=a;i>=b;--i)
#define MP make_pair
#define LL long long
#define X first
#define Y second
#define MAXN 500005
using namespace std;
LL MOD;
LL f[MAXN];
LL sum[MAXN];
LL phi[MAXN];
LL ans[MAXN];
void getphi()
{
for(int i=; i<MAXN; i++) phi[i]=i;
for(int i=; i<MAXN; i+=) phi[i]>>=;
for(int i=; i<MAXN; i+=)
if(phi[i]==i)
{
for(int j=i; j<MAXN; j+=i)
phi[j]=phi[j]/i*(i-);
}
}
void init()
{
MOD=;
REP(i,)MOD*=;
getphi();
for(int i=;i<MAXN;++i)
sum[i]=(phi[i]*i/)%MOD;
for(int i=;i<MAXN;++i)
{
int j;
f[i]=i;
for(j=;j*j<i;++j)
{
if(i%j==)
{
f[i]=(f[i]+sum[j]*i)%MOD;
f[i]=(f[i]+sum[i/j]*i)%MOD;
}
}
if(j*j==i)
{
f[i]=(f[i]+sum[j]*i)%MOD;
}
} ans[]=;
for(int i=;i<MAXN;++i)
{
ans[i]=(ans[i-]+f[i]);
if(ans[i]>MOD)ans[i]-=MOD;
int j;
for(j=;j*j<i;++j)
if(i%j==)
{
ans[i]=(ans[i]+((f[i/j]*j)%MOD)*j)%MOD;
ans[i]=(ans[i]+((f[j]*(i/j))%MOD)*(i/j))%MOD;
}
if(j*j==i)
{
ans[i]=(ans[i]+((f[j]*j)%MOD)*j)%MOD;
}
ans[i]=(ans[i]+(LL)i*i)%MOD;
} } int main() {
init(); int tt,ri=;
scanf("%d",&tt);
while(tt--)
{
int n;
scanf("%d",&n);
printf("Case #%d: %I64d\n",++ri,ans[n]);
}
return ;
}
HDU 4944 FSF’s game(2014 Multi-University Training Contest 7)的更多相关文章
- hdu 4944 FSF’s game(数论)
题目链接:hdu 4944 FSF's game 题目大意:给定N,能够用不大于N的长a和宽b.组成N∗(N−1)2种不同的矩形,对于每一个矩形a∗b要计算它的值,K为矩形a,b能够拆分成若干个K∗K ...
- HDU 6141 - I am your Father! | 2017 Multi-University Training Contest 8
思路来自 FXXL 最小树形图模板用kuangbin的 /* HDU 6141 - I am your Father! [ 最小树形图 ] | 2017 Multi-University Traini ...
- HDU 4944 FSF’s game 一道好题
FSF’s game Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tota ...
- HDU - 4944 FSF’s game
Problem Description FSF has programmed a game. In this game, players need to divide a rectangle into ...
- hdu 6406 Taotao Picks Apples (2018 Multi-University Training Contest 8 1010)(二分,前缀和)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6406 思路: 暴力,预处理三个前缀和:[1,n]桃子会被摘掉,1到当前点的最大值,1到当前点被摘掉的桃子的 ...
- hdu 6319 Problem A. Ascending Rating (2018 Multi-University Training Contest 3 A)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=6319 思路: 单调队列倒着维护,队列里面剩下的值的数量就是这一段区间的count值,如样例第一个区间:3 ...
- HDU 5775 Bubble Sort(线段树)(2016 Multi-University Training Contest 4 1012)
原址地址:http://ibupu.link/?id=31 Problem Description P is a permutation of the integers from 1 to N(ind ...
- HDU 6312.Game-博弈-签到题 (2018 Multi-University Training Contest 2 1004)
2018 Multi-University Training Contest 2 6312.Game 博弈,直接官方题解,懒了. 考虑将游戏变成初始时只有2~n,如果先手必胜的话,那么先手第一步按这样 ...
- HDU 6105 - Gameia | 2017 Multi-University Training Contest 6
/* HDU 6105 - Gameia [ 非平等博弈 ] | 2017 Multi-University Training Contest 6 题意: Bob 可以把一个点和周围所有点都染黑,还有 ...
随机推荐
- 渗透杂记-2013-07-13 Windows XP SP2-SP3 / Windows Vista SP0 / IE 7
Welcome to the Metasploit Web Console! | | _) | __ `__ \ _ \ __| _` | __| __ \ | _ \ | __| | | | __/ ...
- sql-将字符串按指定字符分割插入指定表中
CREATE PROC SPLIT( @STR VARCHAR(MAX), --截取字符串 ), --截取字符 ) --存放表名 ) AS BEGIN ) IF(OBJECT_ID(@TABLE) I ...
- C头文件
#include<cstdio>#include<iostream>#include<cstdlib>#include<cmath>#include&l ...
- 常用js方法
function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var v ...
- C# 只移除最后一个字符
string str = "|||"; Console.WriteLine(str.Substring(0, str.Length - 1)); Console.WriteLine ...
- 复利计算器(4)——jQuery界面美化、自动补全
一.分工 这次终于可以跟小伙伴合作了,经过讨论,我负责界面的美化和输入框自动补全,小伙伴擅长安卓,于是将复利计算器弄成app的任务就交给了小伙伴.为了我们两人团队,我们都好奋斗哈哈哈!! 二.界面美化 ...
- iOS - AppStores App 上架
前言 1.准备 开发者账号 完工的项目 2.上架步骤 1) 创建 App ID 2) 创建证书请求文件(CSR文件) 3) 创建发布证书(CER) 4) 创建 Provisioning Profile ...
- 安卓跳转到GPS设置界面
/** * 监听GPS */ private void initGPS() { LocationManager locationManager = (LocationManager) this . ...
- js根据ID修改背景图片
<SCRIPT language=javascript> function expand(el) { var childObj = document.getElementById(&quo ...
- java:同步和死锁
多个线程共享一个资源的时候需要进行同步(否则会出现错误:如负数,重复数),但是过多的同步会造成死锁. synchronized(this) { } 非同步情况: public class SyncTh ...