hdu4961(因子和倍數)

2021-06-23 08:39:05 字數 735 閱讀 8343

題意:給n個數字,求每個數的左右兩邊離它最近的並且是它的倍數的乘積之和

思路分析:按照題解的方法解,最壞時間複雜度為o(10^5 *sqrt(10^5)),時限是1s,理論上來說會超時,但執行結果只跑了171ms,搞不懂為什麼

思路是這樣的,從左往右遍歷求b,從右往左遍歷求c,在遍歷的過程中,用vis記錄當前狀態下,數字i的離它最近的倍數的位置。

**如下:

#include#include#include#include#include#include#include#include#include#include#include#define ll __int64

#define n 100005

#define inf 0x7ffffff

#define eps 1e-9

#define pi acos(-1.0)

using namespace std;

int a[n],b[n],c[n],vis[n];

int main()

}memset(vis,0,sizeof(vis));

for(i = n; i >= 1; i--)

}ll ans = 0;

for(i = 1; i <= n; i++)

ans += 1ll*b[i]*c[i];

printf("%i64d\n",ans);

}return 0;

}

HDU 1452 因子和 積性函式性質

詳見 include include include define mod 29 using namespace std 求2004 x次方的所有因子對29取餘,可能是由於這一年是閏年才選擇的29 我們可以對2004進行分解 2004 2 2 3 167,很明顯2 2 和 3 和 167 都是相互互...

hdu1215七夕節求因子和

題目鏈結 有t個樣例,每個樣例給定乙個n,將所給n的所有因子相加求和。n的因子就是所有比n小又能被n整除的所有正整數。如12的因子有1,2,3,4,6。t 1 t 500000 n 1 n 500000 這個題思路很簡單,可能你首先想到了不就是從1到n進行遍歷,找他的因子,再用乙個變數計算因子和不就...

七夕節 hdu1215(打表求因子和)

給你乙個數n 1 n 50w 求n的所有因子和,由於n的範圍比較大,所以要採用打表的方式,這是第二次看到這道題了,但是還沒能夠一次寫出來。include include include include include include using namespace std define n 5010...