在山的那边,海的那边住一群勤劳又爱喝酒的兔子,总共有x个兔子。 五月的第一天,他们商量种萝卜,结果第二天他们在地里挖了n个坑。 那天晚上,他们为了即将种下的萝卜搞了一个趴体,结果所有的兔子喝的烂醉如泥。 第三天早上,第1只兔子醒过来,它把所有坑都种上了萝卜,然后去睡觉了。 第四天早上,第2只兔子才醒过来,它把所有是2的倍数的坑进行了“相反操作”(种上萝卜填埋好的坑挖开,挖好坑的种上萝卜又填埋回去); 第五天早上,第3只兔子,它把所有是3的倍数的坑进行了“相反操作”; … 最后,地里总共有多少个坑是种好萝卜填埋回去的。
输入格式:
第一行是两个正整数x和n 1 ≤ x ≤n ≤10000
输出格式:
输出最后地里有多少个坑种上了萝卜又填埋回去的。
输入样例:
2 10000
输出样例:
5000
注:这道题数据很水,直接暴力就过了
#include<iostream>
#include<algorithm>
using namespace std;
int a[1000005];
int main ()
{
int n,m,ans=0;
scanf("%d %d",&n,&m);
for(int i=2;i<=n;i++){
for(int j=1;j<=m;j++){
if(j%i==0){
if(a[j]==0)
a[j]=1;
else
a[j]=0;
}
}
}
for(int i=1;i<=m;i++){
if(!a[i])
ans++;
}
printf("%d\n",ans);
}