简单的求和(打表)
?簡(jiǎn)單的求和
Time Limit:?1 Sec??Memory Limit:?128 MB Submit:?130??Solved:?20SubmitStatusWeb Board
Description
?定義f(i)代表i的所有因子和(包括1和i),給定一個(gè)l,r。求f(l)+f(l+1)+...+f(r)。
Input
?第一行輸入一個(gè)t(t<1000),代表有t組測(cè)試數(shù)據(jù),接下來(lái)每行輸入兩個(gè)數(shù)字l,r,(1<=l<=r<=1000000)。
Output
?每行輸出一個(gè)整數(shù),代表和。
Sample Input
2 1 2 3 4Sample Output
4 11 題解:看見(jiàn)沒(méi)有,這就叫前綴和 代碼: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define mem(x,y) memset(x,y,sizeof(x)) typedef long long LL; const int MAXN=1000010; LL dp[MAXN]; int main(){mem(dp,0);dp[1]=1;for(int i=2;i<=500005;i++){for(int j=i+i;j<MAXN;j+=i){dp[j]+=i;}}for(int i=2;i<MAXN;i++)dp[i]=dp[i]+dp[i-1]+i+1;int t,l,r;scanf("%d",&t);while(t--){scanf("%d%d",&l,&r);printf("%lld\n",dp[r]-dp[l-1]);}return 0; }
總結(jié)
- 上一篇: 0623TP框架联系
- 下一篇: Android的面孔_Actiyity