码迷,mamicode.com
首页 > 其他好文 > 详细

不能被整除的数(南阳oj1160)(数学题)

时间:2014-11-24 01:12:20      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   数据   

不能被整除的数

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

给你一个数N  再给你3个数a,b,c求1到N内即不能被a,b整除,也不能被c整除的数

 

输入
有多组测试数据
每次输一个数N 接下来输入3个数a,b,c
输出1~N不能被a,b,c整除的数字的个数
0<=N<=2*10^9 a,b,c 都不大于N。N=0时不做处理并且结束
输出
输出1~N不能被a,b,c整除的数字的个数
每次输出占一行
样例输入
1000
5 6 8
20
3 4 5
样例输出
600
8
来源
MLFBM
上传者

ACM_杨明鑫

//如果暴力求解则会超时,其实这是道数学题目!

看道数学题估计都会了= =

先算在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

bubuko.com,布布扣(图中相交区域内表示能被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;
}

不能被整除的数(南阳oj1160)(数学题)

标签:style   blog   http   io   ar   color   os   sp   数据   

原文地址:http://blog.csdn.net/hdd871532887/article/details/41424369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!