title: An easy problem 数学 杭电2601

tags: [数学]

题目链接

Problem Description

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 ?

Input

The first line contain a T(T <= 2000) . followed by T lines ,each line contain an integer N (0<=N <= 1010).

Output

For each case, output the number of ways in one line.

Sample Input

2

1

3

Sample Output

0

1

分析:

注意到 ( i +1 ) * ( j + 1 ) = i * j + i + j + 1= n + 1;而且这里的 n 比较大,只能跑一层循环

代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#define LL long long
using namespace std;
LL n;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
int ans=0;
for(LL i=2; i*i<=n+1; i++)
{
if((n+1)%i==0)
ans++;
}
printf("%d\n",ans);
}
return 0;
}

最新文章

  1. Java-Linux系统中搭建开发环境
  2. 如何快速开发出一个高质量的APP——创业谈
  3. 第四章 一切从IL开始
  4. android学习笔记31——ADB命令
  5. mysql模糊查询 like/REGEXP
  6. python yield 理解
  7. poj 3469 Dual Core CPU 最小割
  8. linux(ubuntu) 遇到的问题 --1
  9. 使用ViewPager模拟实现应用程序启动界面
  10. use grep &amp;amp; awk to get ed2k links in the webpage
  11. HTML5实现图片文件异步上传
  12. virsh 常用操作
  13. 如何开发AR增强现实应用与产品
  14. UE4 C++ 笔记
  15. JAVA常用注解
  16. 谈谈MySQL优化原理
  17. curl与wget
  18. JWT简介
  19. 通过NAT转发实现私网对外发布信息
  20. monit

热门文章

  1. Office Web Apps Server(1)
  2. 为什么在默认情况下无法修改被block捕获的变量? __block都做了什么?
  3. 存一些有用的CSS
  4. C#操作Excel文件(转)
  5. C#文件重命名的代码
  6. Jmeter和Charles下载文件
  7. 2016弱校联盟十一专场10.3 We don&#39;t wanna work!
  8. resetroot_169route_python3(用于ubuntu16.04)
  9. 剑指offer-数值的整数次方12
  10. Go基础篇【第6篇】: 内置库模块 flag