1284 2 3 5 7的倍数 51Nod - 1284

原oj 网址点击打开链接

vj 网址 点击打开链接

这道题在打组队赛的时候 我们都一看数据范围 都认为 是 找规律 数据太大了 然后 下来后 听说别的队用的是 容斥原理 我们也不懂 人家 三分钟 ac了 但是 我们有个队 的 队员想了 一个半小时才ac了 然后  我看了别人的代码 和我们的差不多  其实 感觉是 一样的(就是他们的很简短 我们看起来 叼炸天那种) 然后今天打组队赛  真正的发现了ACM的乐趣  真心感觉和队友一起ac出来一道题很快乐 就像打竞技游戏 一起玩然后努力的把游戏打赢 就很快乐   然后这道题的话  我给一个简单的思路 虽然是 有点野路子  想一下  是不是 人家只要 不是 2 3 5 7的倍数 然后 想一下 2 3 5 7 是多少   先拿 2 3 举例 是不是 n/2+n/3 ?? 如果你说对 那么 恭喜你掉进坑里面 其实应该是 n/2+n/3-n/6  因为 他们会多加一个 n/6  也就是说 只要 每个 相减的时候 把 他们的最大公约数 求出来就行 所以  无论多少个数  我们都可以求出来  (欧几里得了解一下) 然后话不多说 发上代码 

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
int main()
{
      long long int n,ans;
      scanf("%lld",&n);
      ans=n-n/2-n/3-n/5-n/7+n/6+n/10+n/14+n/15+n/21+n/35+n/210-n/30-n/42-n/70-n/105;
      printf("%lld\n",ans);
    return 0;
}

阅读更多
个人分类: 组队赛补题
上一篇Death to Binary? POJ - 2116
下一篇HDU - 2203 亲和串
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭