題意:給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...