前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【cf789B】Masha and geometric depression(分类讨论/暴力)

【cf789B】Masha and geometric depression(分类讨论/暴力)

作者头像
饶文津
发布2020-06-02 16:13:01
3270
发布2020-06-02 16:13:01
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

题意

在黑板上写数列,首项是b,公比是q,超过l时就停止不写。给定m个数,遇到后跳过不写。问一共写多少个数,如果无穷个输出inf。

题解

分类讨论要注意b大于l,则一个也不会写。(仔细读题!! 暴力的话,可以用map或者set,然后遇到重复的就是inf。

代码

代码语言:javascript
复制
const int N = 2000001;
ll b,q,u,m;
ll a[N];
int main(){
	while(~scanf("%lld%lld%lld%lld",&b,&q,&u,&m)){
		rep(i,0,m)scanf("%lld",a+i);
		sort(a,a+m);
		bool bad=0,badb=0,badbb=0;
		rep(i,0,m){
			bad|=a[i]==0;
			badb|=a[i]==b;
			badbb|=a[i]==-b;
		}
		if(abs(b)>u)
			puts("0");
		else if(q==1){
			puts(badb?"0":"inf");
		}else if(q==0||b==0){
			if(bad)
				puts(badb||b==0?"0":"1");
			else
				puts("inf");
		}else if(q==-1){
			puts(badb&&badbb?"0":"inf");
		}else {
			int ans=0;
			for(;abs(b)<=u;b*=q){
				if(a[lower_bound(a, a+m, b)-a]!=b)
					++ans;
			}
			printf("%d\n",ans);
		}
	}
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 题解
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档