当前位置: 首页 > news >正文

【codeforces 789B】Masha and geometric depression

【题目链接】: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;
}

转载于:https://www.cnblogs.com/AWCXV/p/7626515.html

相关文章:

  • redis 缓存预热_Redis中缓存预热、击穿、雪崩等问题解决方案
  • Ubuntu环境下IPython的搭建和使用
  • 或是独体字吗_什么是独体字?
  • 【7005】二叉树的遍历问题2
  • eslint 无法格式化ts_vscode-eslint的踩坑实践--typescript没法格式化
  • 【2030】排队打水问题
  • vue入门到启动_Vue入门:Vue项目创建及启动
  • 【2012】建立二维矩阵
  • idle显示出错信息 python_python小课堂05 - 基本数据类型字符串篇(重要)
  • POJ3468(线段树 区间修改 lazy-tag)
  • html radio 默认图片替换_怎么修改单选框radio默认样式
  • ubuntu 16.04 主题美化及终端美化
  • android怎么监听多点触摸_android 多点触控
  • c#webservice接口調用_用.net发布一个简单的webservice
  • 51nod1967 路径定向(欧拉回路+结论题)
  • Google 是如何开发 Web 框架的
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • bearychat的java client
  • Computed property XXX was assigned to but it has no setter
  • Cookie 在前端中的实践
  • leetcode46 Permutation 排列组合
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python学习之路16-使用API
  • windows-nginx-https-本地配置
  • 测试开发系类之接口自动化测试
  • 成为一名优秀的Developer的书单
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 全栈开发——Linux
  • 如何解决微信端直接跳WAP端
  • 如何胜任知名企业的商业数据分析师?
  • 深度学习在携程攻略社区的应用
  • 探索 JS 中的模块化
  • 回归生活:清理微信公众号
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #、%和$符号在OGNL表达式中经常出现
  • (145)光线追踪距离场柔和阴影
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二)斐波那契Fabonacci函数
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (过滤器)Filter和(监听器)listener
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三) diretfbrc详解
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)jQuery 基础
  • (转)Linq学习笔记
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • *p++,*(p++),*++p,(*p)++区别?
  • .aanva
  • .net core Swagger 过滤部分Api
  • .NET Micro Framework初体验
  • .net 发送邮件
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NetCore实践篇:分布式监控Zipkin持久化之殇