題意
有一個等差數列和一個等比數列,等差數列頭爲a,公差爲b,等比數列頭爲c,公倍爲d ,求在upperBound$$之間有多少個數在等差數列或等比數列中,不能重複
樣例
輸入
1 1 1 2 1000
輸出
1
思路
用語句判斷出合法的等差和等比數列,再用統計,最後求出項,項的求法:
代碼
#include<cstdio>
#include<iostream>
using namespace std;
long long i,a,b,c,d,n;
int main()
{
freopen("shulie.in","r",stdin);
freopen("shulie.out","w",stdout);
scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&n);
long long ans=0;
if (d!=0 && d!=1) {
for (i=c; i<=n; i*=d) {
if (i<a||(i-a)%b!=0) ans++; //記錄等比數列的數
}
}
else if (c<a && c<=n || (c-a)%b!=0 && c<=n) ans=1;
if (a<=n) ans+=(n-a)/b+1;//算等差數列的項數
printf("%lld",ans);
}