CF148A Insomnia cure

公主睡前数龙, 每隔k, l, m, n只都会用不同的技能攻击龙. 假定共数了d只龙, 问共有多少龙被攻击了.

思路: 用一个visit数组记录被攻击过的dragon, 最后遍历visit数组统计被攻击过的龙即可.

 1 #define MAXN 100005
 2 using namespace std;
 3 
 4 int visited[MAXN]; // index from 1
 5 
 6 void attack(int c, int d)
 7 {
 8     int f = d/c;
 9     for(int i = 1; i <= f; i++)
10         visited[c*i] = true;
11 }
12 
13 int main()
14 {
15     int k, l, m, n, d, sum;
16     while(~scanf("%d%d%d%d%d", &k, &l, &m, &n, &d))
17     {
18         // init
19         sum = 0;
20         memset(visited, 0, sizeof(int)*MAXN);
21         // attack
22         attack(k, d);
23         attack(l, d);
24         attack(m, d);
25         attack(n, d);
26         // count attacked dragon
27         for(int i = 1; i <= d; i++)
28             if(visited[i] == 1)
29                 sum++;
30         printf("%d\n", sum);
31     }
32     return 0;
33 }

 

 

 

posted @ 2013-07-04 11:33  普兒  阅读(308)  评论(0编辑  收藏  举报