您的位置:首页 > 其它

Problem 2191 完美的数字

2016-06-23 19:37 211 查看
Problem 2191 完美的数字
Accept: 41 Submit: 121
Time Limit: 1000 mSec Memory Limit : 32768 KB

Problem Description

Bob是个很喜欢数字的孩子,现在他正在研究一个与数字相关的题目,我们知道一个数字的完美度是 把这个数字分解成三个整数相乘A * A * B(0< A <=B)的方法数,例如数字80可以分解成1180,2220 ,445,所以80的完美度是3;数字5只有一种分解方法115,所以完美度是1,假设数字x的完美度为d(x),现在给定a,b(a<=b),请你帮Bob求出

S,S表示的是从a到b的所有数字的流行度之和,即S=d(a)+d(a+1)+…+d(b)。

Input

输入两个整数a,b(1<=a<=b<=10^15)
Output

输出一个整数,表示从a到b的所有数字流行度之和。
Sample Input

1 80
Sample Output

107
Source

福州大学第十二届程序设计竞赛


#include <stdio.h>
long long cal(long long N)
{
long long ans=0;
for(long long i=1;i*i*i<=N;i++)//如果是int 型i 那么i*i*i也会是int型
ans+= N/(i*i) +1-i;
return ans;
}
int main()
{
long long a, b;
while(~scanf("%I64d %I64d",&a,&b))
{

long long sum = cal(b)-cal(a-1);//从0-b和减去从0-a-1的和 便得 a-b的和
printf("%I64d\n",sum);
}
return 0;
}
来源: https://segmentfault.com/a/1190000002724584[/code] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: