FSF’s game

Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 727    Accepted Submission(s):
377

Problem Description
FSF has programmed a game.
In this game, players
need to divide a rectangle into several same squares.
The length and width of
rectangles are integer, and of course the side length of squares are
integer.

After division, players can get some coins.
If players
successfully divide a AxB rectangle(length: A, width: B) into KxK squares(side
length: K), they can get A*B/ gcd(A/K,B/K) gold coins.
In a level, you can’t
get coins twice with same method.
(For example, You can get 6 coins from
2x2(A=2,B=2) rectangle. When K=1, A*B/gcd(A/K,B/K)=2; When K=2,
A*B/gcd(A/K,B/K)=4; 2+4=6; )

There are N*(N+1)/2 levels in this game, and
every level is an unique rectangle. (1x1 , 2x1, 2x2, 3x1, ..., Nx(N-1),
NxN)

FSF has played this game for a long time, and he finally gets all
the coins in the game.
Unfortunately ,he uses an UNSIGNED 32-BIT INTEGER
variable to count the number of coins.
This variable may overflow.
We want
to know what the variable will be.
(In other words, the number of coins mod
2^32)

 
Input
There are multiply test cases.

The first line
contains an integer T(T<=500000), the number of test cases

Each of the
next T lines contain an integer N(N<=500000).

 
Output
Output a single line for each test case.

For
each test case, you should output "Case #C: ". first, where C indicates the case
number and counts from 1.

Then output the answer, the value of that
UNSIGNED 32-BIT INTEGER variable.

 
Sample Input
3
1
3
100
 
Sample Output
Case #1: 1
Case #2: 30
Case #3: 15662489
Hint

In the second test case, there are six levels(1x1,1x2,1x3,2x2,2x3,3x3)
Here is the details for this game:
1x1: 1(K=1); 1x2: 2(K=1); 1x3: 3(K=1); 2x2: 2(K=1), 4(K=2); 2x3: 6(K=1); 3x3: 3(K=1), 9(K=3);
1+2+3+2+4+6+3+9=30

 
Author
UESTC
 
 
题意:略。
思路:对于A*B/gcd(A/k,B/k) 看成 N*x/a ,其中x未知,N已知,a是N的因子。
   (因为a必然是N的因子)
        1.现在我们这样转化后,就开始一个一个枚举a了。(我们把a看成了gcd()的整体来看。)
        2.对于一个确定的a值,假设为ai,那么我们现在要做的就是找出 (N*x/a )满足要求的x来。
          并对它进行求和sum(xi/a)*N;(因为N始终没有变化呀。)
          此时 a = gcd(N/k,x/k) 可以转化成  gcd(N,x) = k*a, 
          那么,对于x的取值范围我们知道,是[1,N],求gcd(N,x)=k*a (k是>0的正整数)
          其实就是在[1,N]里,a的倍数,a , 2a , 3a ,4a,,,,,N/a*a , 正确吗?
          会不会遗漏,gcd()=k*a,就是代表最大公约数是a的倍数。
    这样的话,我们就对x进行求和了。sum = a(1+2...N/a) = a*(1+N/a)*N/a/2 =>(1+N/a)*N/2;
         最后根据式子A*x/a,那么就变成  (1+N/a)*N/a /2 * N;
       筛选,dp即可。
 #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
using namespace std;
typedef __int64 LL; const int maxn = 5e5+;
LL p = ;
LL dp[maxn];
void init()
{
int j,tmp;
for(j=;j<=;j++)p=p*; for(int i=;i<maxn;i++){
tmp = i;
for(j=;(tmp=i*j)<maxn;j++){
dp[tmp]=(dp[tmp]+((LL)(+j)*(LL)j)/)%p;
}
}
dp[]=;
for(int i=;i<maxn;i++){
dp[i]=(dp[i-]+dp[i]*i)%p;
}
}
int main()
{
int T,n;
init();
scanf("%d",&T);
for(int t=;t<=T;t++)
{
scanf("%d",&n);
printf("Case #%d: %I64d\n",t,dp[n]);
}
return ;
}
 
              
 

HDU 4944 FSF’s game 一道好题的更多相关文章

  1. 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 ...

  2. HDU - 4944 FSF’s game

    Problem Description FSF has programmed a game. In this game, players need to divide a rectangle into ...

  3. 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的任意因子) 很明显 ...

  4. HDU 2096 小明A+B --- 水题

    HDU 2096 /* HDU 2096 小明A+B --- 水题 */ #include <cstdio> int main() { #ifdef _LOCAL freopen(&quo ...

  5. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  6. hdu 5071(2014鞍山现场赛B题,大模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 思路:模拟题,没啥可说的,移动的时候需要注意top的变化. #include <iostr ...

  7. hdu 1251 统计难题 (字典树入门题)

    /******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...

  8. HDU 2577 How to Type(dp题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577 解题报告:有一个长度在100以内的字符串,并且这个字符串只有大写和小写字母组成,现在要把这些字符 ...

  9. [HDU 2602]Bone Collector ( 0-1背包水题 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 水题啊水题 还给我WA了好多次 因为我在j<w[i]的时候状态没有下传.. #includ ...

随机推荐

  1. 使用javascript实现在页面打印的效果的三种方式

    <div id="console"></div> <script type="text/javascript"> var c ...

  2. BizTalk开发系列(十一) 在Orchestration中执行Pipeline

    由于开发需要有时要在流程中执行Pipeline.比如从DB的某个字段中取消息的字符串并在流程中构造消息.该需要通过pipeline进行升级 属性字段,验证消息等处理.BizTalk架构已经开放了此接口 ...

  3. ExtJS笔记 Reader

    Readers are used to interpret data to be loaded into a Model instance or a Store - often in response ...

  4. 小吐槽Toolbar

    最近弄界面 要吧全部图标改成PNG格式 虽说从2010以后Delphi默认支持PNG格式图片, 但是想应用到按钮上, 似乎除了TButton意外, 也只能ToolBar可以正常显示了, 其他的, 比如 ...

  5. Bootstrap 按钮和折叠插件

    ---恢复内容开始--- 一.按钮 可以通过按钮插件创建不同状态的按钮. //单个切换. <button class="btn btn-primary" data-toggl ...

  6. KinderEditor编辑器使用

    KinderEditor编辑器的使用 分为简单的三步.1:添加引用部分 <script src="/KinderEditor/kindeditor-min.js">&l ...

  7. [Android Tips] 14. Using Proguard with Android without obfuscation

    Option -dontobfuscate REF Using Proguard with Android without obfuscation

  8. [Android Tips] 6. Parallax ViewPager

    文章 http://ryanhoo.github.io/blog/2014/07/16/step-by-step-implement-parallax-animation-for-splash-scr ...

  9. WebViewClient shouldOverrideUrlLoading 常见错误用法

    需求描述 在使用 WebView 的项目中,一个常见的需求是将页面内的链接跳转限制在 WebView 内,而不是使用外部浏览器打开,但 WebView 的默认行为是将链接点击事件作为 Intent 发 ...

  10. qunit学习(一)

    QUnit是一个强大的JavaScript单元测试框架,用于调试代码.该框架是由jQuery团队的成员所开发,并且是jQuery的官方测试套件.任意正规JavaScript代码QUnit都能测试. 其 ...