程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 容斥思想,思想

容斥思想,思想

編輯:C++入門知識

容斥思想,思想


題目:把同時不能被2,3,5整除的數叫做神奇數。給你一個區間l,r(從l到r)。這個區間裡面有多少個神奇數。(l,r<231-1)

Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

輸入:包含多組數據,每組數據有2個數了l,r。

輸出:輸出這個區間裡面神奇數的個數,輸出占一行。

樣例輸入:0 10

樣例輸出:2




 

思想:容斥思想

從1到n能被2整除的數有n/2個,能被3整除的數有n/3個,能被5整除的數有n/5個。

所以從1到n裡面的神奇數的個數是n-n/2-n/3-n/5嗎?

不是有的數能被2,3整除,有的數能被2,5整除,有的數能被3,5整除,有的數能被2,3,5整除。

所以從1到n的神奇數的個數應該是n-n/2-n/3-n/5+n/6+n/10+n/15+n/30。




 

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int l,r;
    int a,b,c,d,e,f,g;
    int gg;
    while(scanf("%d%d",&l,&r)!=EOF)
    {
        if(l>=2)
        {
            a=(l-1)/2;b=(l-1)/3;c=(l-1)/5;d=(l-1)/6;e=(l-1)/10;f=(l-1)/15;g=(l-1)/30;
            gg=(l-1)-a-b-c+d+e+f+g;
        }
        else gg=0;
        a=r/2;b=r/3;c=r/5;d=r/6;e=r/10;f=r/15;g=r/30;
        gg=r-a-b-c+d+e+f+g-gg;
        cout<<gg<<endl;
    }
    return 0;
}

  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved