X章求和
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
X章最喜欢求和了,他一看到什么鬼就什么鬼都加起来。one day,他得到了2个数a,b。他定义一个整数x为shenmegui数,假如x%b!=0且(x/b)/(x%b)=k(刚好整除),k是一个整数,且k的范围为[1,a]。X章想把所有shenmegui数都加起来,求和。
Output:
输出占1行,一个整数,整数取余1000000007(10^9+7)
note:满足第二个样例的数为3和5,3+5=8
Sample Output:
0
8
解题思路:推导+证明!!!
AC代码:
1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long LL;
4 const LL mod=1e9+7;
5 inline void print(LL x){
6 if(x<0)putchar('-'),x=-x;
7 if(x>9)print(x/10);
8 putchar(x%10+'0');
9 }
10 LL a,b,ans;
11 int main(){
12 while(~scanf("%lld%lld",&a,&b)){
13 ans=(a*(1LL+a)/2%mod*b%mod+a)*(b*(b-1LL)/2%mod)%mod;///公式推导
14 print(ans),puts("");
15 }
16 return 0;
17 }