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++)
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);
printf("%I64d\n",sum);
}
return 0;
}
来源: https: