模拟一下那个过程,直到绝对值超过l,或者出现循环为止。

如果结束之后,绝对值是超过l的,就输出当前写在黑板上的数量。

如果出现循环,则如果写在黑板上的数量非零,则输出inf(注意!如果陷入的循环是一个全部被禁止的循环,但是黑板上有输出的值,则还是应该输出黑板上的值的数量。这种情况用循环再向后扫几项判一下即可。),否则输出0。

用三个set处理。

#include<cstdio>
#include<set>
using namespace std;
typedef long long ll;
ll Abs(ll x){
return x<0 ? (-x) : x;
}
int b1,q,l,m,a[100100];
set<int>S,S2,S3;
int main(){
// freopen("b.in","r",stdin);
scanf("%d%d%d%d",&b1,&q,&l,&m);
for(int i=1;i<=m;++i){
scanf("%d",&a[i]);
S.insert(a[i]);
}
ll b=b1;
while(1){
if(Abs(b)>(ll)l || S2.find(b)!=S2.end()){
break;
}
S2.insert(b);
if(S.find(b)==S.end()){
S3.insert(b);
}
b*=(ll)q;
}
if(Abs(b)<=(ll)l){
if(S3.size()){
bool flag=0;
for(int i=1;i<=100000;++i){
b*=(ll)q;
if(S.find(b)==S.end()){
flag=1;
break;
}
S3.erase((int)b);
}
if(flag){
puts("inf");
}
else{
printf("%d\n",S3.size());
}
}
else{
puts("0");
}
}
else{
printf("%d\n",S3.size());
}
return 0;
}

最新文章

  1. C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置
  2. 模拟搭建Web项目的真实运行环境(六)
  3. [Azure附录]1.在Windows Server 2012中安装Active Directory域服务
  4. JS的跨域问题
  5. awk除去重复行
  6. 如何用 React Native 创建一个iOS APP?(三)
  7. QT 设置SizePolicy的例子(简单明了)
  8. 新概念英语(1-101)A Card From Jimmy
  9. PLSQL DEVELOPER编辑器的自动替换文件
  10. grub.conf解析
  11. 【Codeforces 204E】Little Elephant and Strings
  12. DataGridView控件-[引用]
  13. 另开一篇 https
  14. 在testbench从文件读入激励
  15. 高性能Web服务之lnmp架构应用
  16. 根据百度API获得经纬度,然后根据经纬度在获得城市信息
  17. Find Min In Rotated Sorted Array,寻找反转序列中最小的元素。
  18. Manacher算法(马拉车)
  19. linux---mysql忘记密码
  20. Locust学习总结分享

热门文章

  1. bzoj 1014 splay
  2. SQLserver 字符串分割函数
  3. spring mvc 提供的几个常用的扩展点
  4. 【转】debian下的update-rc.d的使用
  5. Win7(64bit)搭建SVN
  6. SD卡spi读写流程
  7. centos rar 文件打开办法
  8. AspxGridView 表中的ASPxHyperLink不导出到excel
  9. Eclipse+Pydev+numpy+scipy+matplotlib
  10. C#面向对象(OOP)入门—第一天—多态和继承(方法重载)