用if判断出合法的等差和等比数列,再用ans统计,最后求出项,项的求法:
(
a
(
首
项
)
+
e
(
尾
项
)
)
(a(首项)+e(尾项))
(a(首项)+e(尾项))
÷
÷
÷
b
+
1
b+1
b+1。
代码:
#include<cstdio>#define ll long long
ll a,b,c,d,e,ans=0;intmain(){freopen("shulie.in","r",stdin);freopen("shulie.out","w",stdout);scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&e);//输入。if(d!=0&&d!=1)//判断不能的情况{for(ll i=c;i<=e;i*=d)//等差数列。if(i<a||(i-a)%b!=0)
ans++;}else{if(c<a&&c<=e||(c-a)%b!=0&&c<=e)//等比数列。
ans++;}if(a<=e)
ans+=(e-a)/b+1;//求项。printf("%lld",ans);//输出。}