Hdoj 5211 Mutiple 【水】

来源:互联网 发布:苏州会所 知乎 编辑:程序博客网 时间:2024/05/16 05:24

Mutiple

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 65    Accepted Submission(s): 45


Problem Description
WLD likes playing with a sequence a[1..N]. One day he is playing with a sequence of N integers. For every index i, WLD wants to find the smallest index F(i) ( if exists ), that i<F(i)n, and aF(i) mod ai = 0. If there is no such an index F(i), we set F(i) as 0.
 

Input
There are Multiple Cases.(At MOST 10)

For each case:

The first line contains one integers N(1N10000).

The second line contains N integers a1,a2,...,aN(1ai10000),denoting the sequence WLD plays with. You can assume that all ai is distinct.
 

Output
For each case:

Print one integer.It denotes the sum of all F(i) for all 1i<n
 

Sample Input
41 3 2 4
 

Sample Output
6
Hint
F(1)=2F(2)=0F(3)=4F(4)=0
 

Source
BestCoder Round #39 ($)
 
题意:求大于i(i+1~n-1)小于等于n的中间最小的数的和

代码:

#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>#include <set>#define LL __int64using namespace std;const LL Mod = 10007;const LL M = 1e4+5;int s[M];int main(){    int n;    while(scanf("%d", &n) == 1){        memset(s, 0, sizeof(s));        for(int i = 1; i <= n; ++ i){            scanf("%d", &s[i]);        }        int sum = 0;        for(int i = 1; i < n; ++ i){            int Min = 1e7;            for(int j = i+1; j <= n; ++ j){                if(s[j]%s[i] == 0&&Min > j){                    Min = j;                }            }            if(Min != 1e7) sum += Min;         }        printf("%d\n", sum);    }    return 0;}



0 0
原创粉丝点击