# NYOJ 216 A problem is easy

217人阅读 评论(0)

## A problem is easy

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*j+i+j+1=N+1,也就是说，可以进一步变形为(i+1)*(j+1)=N+1

#include<stdio.h>
main(){
int n,i;
scanf("%d",&n);
while(n--){
int num,sum=0;
scanf("%d",&num);
for(i=2;i*i<=num+1;i++){
if((num+1)%i==0)
sum++;
}
printf("%d\n",sum);
}

}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：51380次
• 积分：2759
• 等级：
• 排名：第12981名
• 原创：233篇
• 转载：22篇
• 译文：0篇
• 评论：9条
评论排行
最新评论