一個(gè)數(shù)是完美的,僅當(dāng)它等于它的因數(shù)中比它小的所有數(shù)之和。
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到龍鳳網(wǎng)站設(shè)計(jì)與龍鳳網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋龍鳳地區(qū)。例如:28=1+2+4+7+14,所以?28?是完美的。
由此我們可以定義一個(gè)數(shù)的不完美值?F(N),代表?N?和比?N?小的所有?N?的因數(shù)之和的差的絕對(duì)值。
例如:F(6)=|6-1-2-3|=0,
F(11)=|11-1|=10,
F(24)=|24-1-2-3-4-6-8-12|=|-12|=12F。
現(xiàn)在給出兩個(gè)正整數(shù)?A?和?B,請(qǐng)你求出?F(A)+F(A+1)+...+F(B)。
輸入格式一行,兩個(gè)整數(shù)?A 和?B,含義如上。
輸出格式一行,一個(gè)整數(shù),表示?F(A)+F(A+1)+...+F(B)F(A)+F(A+1)+...+F(B)。
樣例 #1 樣例輸入 #11 9
樣例輸出 #121
樣例 #2
樣例輸入 #224 24
樣例輸出 #212
提示【樣例解釋 #1】
F(1)+...+F(9)=1+1+2+1+4+0+6+1+5=21。
【數(shù)據(jù)范圍】
對(duì)于 100%?的數(shù)據(jù),1≤A,B≤ 10^7。
題解這一題我們可以用類(lèi)篩選法(類(lèi)篩選法是指在本題中求出某一段每一個(gè)數(shù)的所有因數(shù))來(lái)做。怎么做呢?我們可以用一個(gè)數(shù)組f來(lái)存儲(chǔ)1~b中的每一個(gè)數(shù)的因數(shù)和,因?yàn)橐粋€(gè)合數(shù)可以分解為有限個(gè)質(zhì)數(shù)的乘積,設(shè)一個(gè)數(shù)i(從1到根號(hào)n)的j倍為n,所以就以知道i和j一定是n的約數(shù),若i=j,那么 f[i*j]=f[i*j]+i?就行了,否則f[i*j]=f[i*j]+i+j。
代碼#includeusing namespace std;
long long a,b,s[10000001];
int main()
{
cin>>a>>b;
for(int i=1;i*i<=b;i++)
{
for(int j=i;j*i<=b;j++)
{
if(i!=j)
{
s[i*j]=s[i*j]+i+j;
}
else
{
s[i*j]=s[i*j]+i;
}
}
}
long long ans=0;
for(int i=a;i<=b;i++)
{
ans=ans+abs(2*i-s[i]);
}
cout<
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧