大地母親在忽悠着你

大地母親在忽悠着你


題目描述

大地母親在護佑着你……
……
對不住了,我不想寫背景了。
……
某牛頭人:願大地母親寬恕你的罪行……
……
如何得到寬恕?
……
某牛頭人:計算 mi=1n mod i 的值。
……
大地母親你真在忽悠我……


輸入格式

第一行 2 個數字 MN


輸出格式

輸出一個數字,即答案。


樣例輸入

5 3


樣例輸出

7


樣例解釋

3 mod 1=0
3 mod 2=1
3 mod 3=0
3 mod 4=3
3 mod 5=3
答案爲 1+3+3=7


數據範圍

20% 的數據 1N,M106
100% 的數據 1N,M109


Solution

ans=i=1mn mod i=i=1mnnii=mni=1mnii

Code

#include <iostream>
#include <cstdio>

#define LL unsigned long long
#define Min(x,y) ((x)<(y)?(x):(y))

using namespace std;

LL m,n,minx,ans;

int main(){
    freopen("cheat.in","r",stdin);
    freopen("cheat.out","w",stdout);
    scanf("%llu%llu",&m,&n);
    minx=Min(m,n);
    ans=n*m;
    for(LL i=1,it;i<=minx;i=it+1){
        it=Min(minx,n/(n/i));
        ans-=(n/i)*((it+i)*(it-i+1)/2);
    }
    printf("%llu\n",ans);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章