Codeforces 789 B Masha and geometric depression 思维

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

  题目描述: 大概是给首项b1和公比q,数列中的数的绝对值不能超过 l,和不好的数的个数 m,不好的数定义为:不是数列中的数,让你求出最后形成的数列最多有多少个(在形成数列的时候,如果出现了不好的数,不能加入数列,继续向下执行

  解题思路: 只需要讨论b1 q 分别为0, 1, -1 的情况就可以, 是一道比较简单的题, 但是我傻逼的没有读明白题, 题目说如果遇到大于l就停止了, 但是我以为不停止, 我还以为自己有那个地方出错了, 然后就一直在调试代码, 在寻找错误, 其实根本没有错误, 就是我的题意理解错了, 赛后看数据还是不明白自己哪里错了, 就是这样自己也不去读题我也是醉了, 自己为什么这么固执啊......  

  代码: 

#include <iostream>
#include <cstdio>
#include <map>
#include <iterator>
#include <string>
#include <algorithm>
#include <vector>
#include <cmath>
#include <cstring>
using namespace std;
typedef long long ll;
map<ll, ll> bad;
ll b1, q, l, m;

int main() {
    scanf( "%lld%lld%lld%lld", &b1, &q, &l, &m );
    for( ll i = 1; i <= m; i++ ) {
        ll num;
        scanf( "%lld", &num );
        bad[num] = 1;
    }
    if( q == 1 || q == -1 ) {
        if( q == 1 ) {
            if( bad[b1] || abs(b1) > l ) {
                printf( "0
" );
            }
            else {
                printf( "inf
" );
                
            }
        }
        else {
            if( (bad[b1] && bad[-b1]) || abs(b1) > l ) {
                printf( "0
" );
            }
            else {
                printf( "inf
" );
                
            }
        }
        return 0;
    }
    if( b1 == 0 ) {
        if( bad[b1] ) {
            printf( "0
" );
        }
        else {
            printf( "inf
" );
        }
        return 0;
    }
    if( q == 0 ) {
        if( (bad[0]&&bad[b1]) || abs(b1) > l ) {
            printf( "0
" );
        }
        else if( !bad[b1] && bad[0] ) {
            printf( "1
" );
        }
        else {
            printf( "inf
" );
            
        }
        return 0;
    }
    ll t = (ll)b1;
    ll ans = 0;
    while( abs(t) <= (ll)l ) {
        if( !bad[t] ) ans ++;
        t = t * q;
    }
    printf( "%lld
", ans );
    return 0;
}
View Code

  思考: 马上就区域赛了自己还是这么马虎, 自己这一年的努力白费了? 是白费了吗? 如果不想白费的话可再努力一点, 可以再认真一点可以吗? 谢谢, 别辜负自己.....然后好好学习数学啊, 机器学习的底子就是数学, 自己的视野一定要提升, 要不然真对不起自己每天泡图书馆, 每天回寝室还学, 和每天玩游戏还有什么区别, 专心一点, 认真一点好吗

原文地址:https://www.cnblogs.com/FriskyPuppy/p/7622960.html