国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

洛谷 P2424 約數和

2019-11-14 09:57:23
字體:
來源:轉載
供稿:網友

P2424 約數和 題目提供者曹彥臣 難度 普及+/提高 題目背景 Smart最近沉迷于對約數的研究中。 題目描述 對于一個數X,函數f(X)表示X所有約數的和。例如:f(6)=1+2+3+6=12。對于一個X,Smart可以很快的算出f(X)。現在的問題是,給定兩個正整數X,Y(X

/*暴力線性遞推.*/#include<iostream>#define LL long longusing namespace std;LL ans,x,y;int main(){ cin>>x>>y; for(int i=1;i<=x-1;i++) ans-=(x-1)/i*i; for(int i=1;i<=y;i++) ans+=y/i*i; cout<<ans; return 0;}/*這題正解蠻神的.暴力的話就nsqrt(n)對每個數進行質因數分解.然后我們考慮優化.我們知道1-n中i的倍數有[n/i]個.然后我們就可以線性遞推了.但是這樣依然過不了此題.我們令s[i]=f[1]+f[2]+f[3]+..... =[i/1]*1+[i/2]*2+[i/3*3]+.....然后我們會發現里邊有些值是相同的.so 我們可以用等差數列加速.ans=s[y]-s[x-1].復雜度sqrt(n). */#include<iostream>#define LL long longusing namespace std;LL ans,x,y;LL slove(LL n){ LL i=1,tot=0; while(i<=n) { int j=n/(n/i); tot+=n/i*(j-i+1); i=j+1; } return tot;}int main(){ cin>>x>>y; cout<<slove(y)-slove(x-1); return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赤城县| 香港| 怀远县| 大连市| 吉林省| 杨浦区| 百色市| 北川| 墨竹工卡县| 上饶市| 福安市| 宣汉县| 广河县| 浑源县| 张家港市| 卢氏县| 栖霞市| 江西省| 游戏| 习水县| 虹口区| 新宁县| 满洲里市| 辽宁省| 阿克苏市| 琼海市| 泽库县| 辽阳县| 宁都县| 内乡县| 杭州市| 肇源县| 于都县| 泰来县| 太白县| 绍兴市| 微山县| 昌图县| 唐山市| 冷水江市| 红桥区|