【题目链接】:http://codeforces.com/contest/789/problem/B

【题意】



让你一个一个地写出等比数列的每一项

(注意是一个一个地写出);

有m个数字不能写;

且数字大于l的不写(大于l了就停止不再继续写)

【题解】



特判b1=0,q=0,q=1,q=-1的情况就好;

有个很坑的地方就是,如果b1>l了,那么b2..bn就不能再计算了,因为在b1处就已经停止了;->在q=0的时候要先判断b1是不是大于l,是大于l就不用再考虑后面的0了.

具体的看代码吧.



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%lld",&x)
#define ref(x) scanf("%lf",&x) typedef pair<int, int> pii;
typedef pair<LL, LL> pll; const int dx[9] = { 0,1,-1,0,0,-1,-1,1,1 };
const int dy[9] = { 0,0,0,-1,1,-1,1,-1,1 };
const double pi = acos(-1.0);
const int N = 110; LL b1, q, l, m, ans = 0;
map <int, int> dic; void in()
{
rel(b1), rel(q), rel(l), rel(m);
rep1(i, 1, m)
{
int x;
rei(x);
dic[x] = 1;
}
} void out()
{
exit(0);
} void special()
{
if (b1 == 0)
{
if (dic[0])
puts("0");
else
puts("inf");
out();
}
if (q == 0)//b1!=0
{
int ju1 = dic[b1], ju2 = dic[0];
if (abs(b1) > l)//如果第一个数字就是大于l的,后面的0不能算
{
puts("0");
out();
}
if (ju2 == 0)
{
puts("inf");
}
else//不能写0
{
if (abs(b1) <= l)//第一个数字在l范围内
{
if (ju1 == 0)
puts("1");
else
puts("0");
}
else//不在l范围内,第一个数字也不能写
{
puts("0");
}
}
out();
}
if (q == 1)
{
//b1已经确定不会为0了
if (abs(b1) <= l)
{
if (dic[b1])
{
puts("0");
}
else
puts("inf");
}
else//不在l范围内,直接不能输出
puts("0");
out();
}
if (q == -1)
{
//b1 和 -b1交替出现
//b1确定不会为0了
if (abs(b1) <= l)
{
if (dic[b1] && dic[-b1])
{
puts("0");
}
else
puts("inf");
}
else
puts("0");
out();
}
} void get_ans()
{
LL temp = b1; while (abs(temp) <= l)
{
if (!dic[temp])
{
ans++;
}
temp = temp*q;
}
} void o()
{
cout << ans << endl;
} int main()
{
//freopen("F:\\rush.txt", "r", stdin);
in();//checked
special();//checked
get_ans();//checked
o();
//printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC);
return 0;
}

最新文章

  1. 洛谷 P1373 小a和uim之大逃离 Label:dp 不会
  2. Oracle数据库导入、导出dmp文件
  3. Java NIO非阻塞理论学习
  4. dwr消息推送
  5. 设置contentType
  6. x264_param_t结构
  7. CCNA实验(5) -- OSPF
  8. NYNU_省赛选拔题(6)
  9. 干净的架构The Clean Architecture
  10. 造轮子-Java泛型堆排
  11. openSUSE虚拟机安装并连接Xshell
  12. 搭建Linux下的SVN服务器
  13. 使用chromebook的记录
  14. python学习3---产生随机数
  15. 如何将一个excel表格的数据匹配到另一个表中
  16. 用VSCode写Vue要用到的配置
  17. mysql-5.7.23-winx64.zip安装教程
  18. 客户端连接linux经常间隔性断开链接【转】
  19. oracle 变量
  20. ios 拉伸图片和计算文字的大小

热门文章

  1. oracle 索引监控
  2. KNN最近邻算法
  3. PHP学习(类型转化)
  4. SSH免密码登录的方法
  5. 带三角形下标的提示框(按钮button)
  6. Ubuntu里node命令出错,找不到
  7. node.js(连接mysql)
  8. LeetCode86 Partition List
  9. @hdu - 5503@ EarthCup
  10. 【[Offer收割]编程练习赛9 C】三等分