A problem is easy

简介:

A problem is easy

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 3
描述
When Teddy was a child , he was always thinking about some simple math problems ,such as “What it’s 1 cup of water plus 1 pile of dough ..” , “100 yuan buy 100 pig” .etc..

One day Teddy met a old man in his dream , in that dream the man whose name was“RuLai” gave Teddy a problem :

Given an N , can you calculate how many ways to write N as i * j + i + j (0 < i <= j) ?

Teddy found the answer when N was less than 10…but if N get bigger , he found it was too difficult for him to solve.
Well , you clever ACMers ,could you help little Teddy to solve this problem and let him have a good dream ?
输入
The first line contain a T(T <= 2000) . followed by T lines ,each line contain an integer N (0<=N <= 10^11).
输出
For each case, output the number of ways in one line
样例输入
2
1
3
样例输出
0
1

分析:

i*j+i+j=n<=> (i+1)*(j+1)=n+1;

因此只要从2到sqrt(n+1)找就可以了。

如果(n+1) % i == 0,那么就说明找到一个。

查看代码---运行号:252167----结果:Accepted

运行时间: 2012-10-05 11:22:30  |  运行人: huangyibiao
01. #include <iostream>
02. #include <cmath>
03. using namespace std;
04.  
05. int main()
06. {
07. int testNum;
08. cin >> testNum;
09.  
10. while (testNum--)
11. {
12. int count = 0;
13. long n;
14. cin >> n;
15.  
16. long s = (long)(sqrt(n+1));
17. for (long i = 2; i <= s; i++)
18. {
19. if ((n+1) % i == 0)
20. {
21. count ++;
22. }
23.  
24. }
25. cout << count << endl;
26. }
27.  
28.  
29. return 0;
30. }

目录
相关文章
|
Go C++
P1001 A+B Problem
P1001 A+B Problem
115 0
In Search of an Easy Problem
In Search of an Easy Problem
92 0
In Search of an Easy Problem
Divisibility Problem
Divisibility Problem
153 0
HDOJ 2055 An easy problem
HDOJ 2055 An easy problem
113 0
|
Java 文件存储
HDOJ(HDU) 2132 An easy problem
HDOJ(HDU) 2132 An easy problem
111 0
|
Java 文件存储
HDOJ(HDU) 2123 An easy problem(简单题...)
HDOJ(HDU) 2123 An easy problem(简单题...)
173 0
【HDU 5572 An Easy Physics Problem】计算几何基础
2015上海区域赛现场赛第5题。 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5572 题意:在平面上,已知圆(O, R),点B、A(均在圆外),向量V。
1040 0