标签:style blog http io ar color os sp 数据
给你一个数N 再给你3个数a,b,c求1到N内即不能被a,b整除,也不能被c整除的数
1000 5 6 8 20 3 4 5
600 8
//如果暴力求解则会超时,其实这是道数学题目!
看道数学题估计都会了= =
先算在1到500中,能被2整除或能被3整除或能被7整除的数有几个:
能被2整除的:
500/2=250
或能被3整除的:
500/3=166
能被7整除的:
500/7=71
能同时被2和3整除的:
500/6=83
能同时被2和7整除的:
500/14=35
能同时被3和7整除的:
500/21=23
能同时被2、3和7整除的:
500/42=11
(图中相交区域内表示能被6整除的数,等等)在1到500中,不能被2整除,不能被3整除,不能被7整除的数有:
500-[250+166+71-83-35-23+11]=143个
#include<stdio.h> #include<string.h> int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int n,a,b,c; int k1,k2,k3,l,sum; while(scanf("%d",&n)&&n) { scanf("%d%d%d",&a,&b,&c); sum=0; k1=a*b/gcd(a,b); l=k1*c/gcd(k1,c); k2=a*c/gcd(a,c); k3=b*c/gcd(b,c); sum=n-(n/a+n/b+n/c-n/k1-n/k2-n/k3+n/l); printf("%d\n",sum); } return 0; }
标签:style blog http io ar color os sp 数据
原文地址:http://blog.csdn.net/hdd871532887/article/details/41424369