您的位置:首页 > 其它

hdoj 5211 Mutiple 【数学】

2016-04-07 17:22 309 查看
题目链接:hdoj 5211 Mutiple

题意:给定n元素的序列a[],f[i]为最小的j满足a[j] % a[i] == 0,不存在为0。问你∑ni=1f[i]。

怎么搞都可以过,毕竟n太小。。。

AC代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#define CLR(a, b) memset(a, (b), sizeof(a))
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e4 + 10;
int a[MAXN];
int pos[MAXN];
int main()
{
int n;
while(scanf("%d", &n) != EOF) {
CLR(pos, 0);
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
pos[a[i]] = i;
}
int ans = 0;
for(int i = 1; i <= n; i++) {
int id = INF;
for(int j = 2; a[i] * j <= n; j++) {
int v = a[i] * j;
if(pos[v] && pos[v] > i) {
id = min(id, pos[v]);
}
}
if(id != INF) ans += id;
}
printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: