JHDU 2601 An easy problem (数学 )
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;
}
最新文章
- Java-Linux系统中搭建开发环境
- 如何快速开发出一个高质量的APP——创业谈
- 第四章 一切从IL开始
- android学习笔记31——ADB命令
- mysql模糊查询 like/REGEXP
- python yield 理解
- poj 3469 Dual Core CPU 最小割
- linux(ubuntu) 遇到的问题 --1
- 使用ViewPager模拟实现应用程序启动界面
- use grep &;amp; awk to get ed2k links in the webpage
- HTML5实现图片文件异步上传
- virsh 常用操作
- 如何开发AR增强现实应用与产品
- UE4 C++ 笔记
- JAVA常用注解
- 谈谈MySQL优化原理
- curl与wget
- JWT简介
- 通过NAT转发实现私网对外发布信息
- monit
热门文章
- Office Web Apps Server(1)
- 为什么在默认情况下无法修改被block捕获的变量? __block都做了什么?
- 存一些有用的CSS
- C#操作Excel文件(转)
- C#文件重命名的代码
- Jmeter和Charles下载文件
- 2016弱校联盟十一专场10.3 We don&#39;t wanna work!
- resetroot_169route_python3(用于ubuntu16.04)
- 剑指offer-数值的整数次方12
- Go基础篇【第6篇】: 内置库模块 flag