首页 > 其他分享 > CCPC Changchun 2020 D, Meaningless Sequence题解

CCPC Changchun 2020 D, Meaningless Sequence题解

时间:2023-08-03 11:15:08浏览次数:39  
标签:pw Sequence int 题解 个数 CCPC long Meaningless

听说是签到题。

不难看出设x为i二进制个数下1的个数(还是难的),则a_i=c^x。那么我们只需要考虑所有0到n的个数。

当n为1111时,可以得到为(1+c)^n次方,那么我们把答案看成两部分一部分是1到111...和1000到n,

那么当si位为1时,可以看成是n去掉前一位后再乘以c,递推得到每一个位置的答案,就是最终的个数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=4010;
const int mod=1e9+7;
char s[N];
int c;
ll pw[N];
void solve(){
    cin>>s>>c;
    int n=strlen(s);
    pw[0]=1;
    for(int i=1;i<=n;i++){
        pw[i]=pw[i-1]*(c+1)%mod;
    }
    ll ans=0,pre=1;
    for(int i=0;i<n;i++){
        if(s[i]=='1'){
            ans=(ans+pre*(pw[n-i-1]))%mod;
            pre=pre*c%mod;
        }
    }
    ans=(ans+pre)%mod;
    cout<<ans<<endl;
}


int main() 
{
    std::ios::sync_with_stdio(false);
    cin.tie(0); 
    cout.tie(0);
    int _=1;
    while(_--){
        solve();
    }
    return 0;
}

 

标签:pw,Sequence,int,题解,个数,CCPC,long,Meaningless
From: https://www.cnblogs.com/552Hz/p/17602740.html

相关文章

  • 题解 SP15454
    前言数学符号约定\(\operatorname{lowbit}(x)\):表示\(x\)的二进制最低位。\([a,b]\):表示区间\(a\simb\),其中包含\(a,\,b\)端点,其区间长度为\(b-a+1\)。如非特殊说明,将会按照上述约定书写符号。题目大意有一个初始全为\(0\)的序列\(A\),你需要支持一下操作:add......
  • 题解 ARC104F
    前言在这里首先感谢一下题解区的FZzzz,本人的题解思路主要是基于他并给出了自己的理解。如非特殊说明,本题解中的数学符号原则上与题目中一致。题目分析需要转化的喵喵题。我们需要把原问题转化成一个图论计数问题,然后剩下的就很好办了。好,首先让我们修改一下题目的要求,将不......
  • 题解 AGC054D
    前言因为本人尚菜,所以本篇文章没有什么数学符号,请大家放心食用。题目分析先吐槽一嘴,这个o表示(),这个x表示)(,十分形象。好,我们先观察原序列,容易得出第一条性质:ox的加入不会让我们不合法的序列变合法,相反,它会让我们合法的序列变不合法。于是可以得出,无论如何,只要我们......
  • 题解 P9406【[POI2020-2021R3] Nawiasowania】
    一个显然的思路是:在排列\(p\)的括号串合法的基础上,使得左括号在原括号串中尽量靠左,这样答案更有可能合法。于是我们求出这个原括号尽量靠左的括号串(下文称为“最优括号串”),然后check合法性即可。下文中\(s\)是排列\(p\)的括号串。当\(n=2\)时,唯一的填法是令\(s_1\get......
  • 题解 P9326
    前言数学符号约定\(n\):任意正整数。\(\#\):从未出现过的小写字母。\(\Sigma\):字符集,这里指小写字母集合。\(S\):最终答案的字符矩阵。其余符号同题目翻译中所写。如非特殊说明,将会按照上述约定书写符号。题目大意构造一个\(N\timesM\)的小写字母矩阵,使得其中有\(R\)行......
  • 题解
    大力相应teacher要求。正难则反,考虑求不合法的三元组的数量。对于一个不合法的三元组,可以发现条件等价于三元组中有一个点出度为2。记\(m\)次操作后每个点出度为\(d_i\),答案就是\(\dbinom{n}{3}-\sum\limits_{i=1}^n\dbinom{d_i}{2}\)。那么怎么统计?回忆\(\mathcal{O}(......
  • Lua script attempted to access a non local key in a cluster node 问题解决
    一、问题描述最近优化公司需要对不同的业务系统的缓存工具提供一个标准化的解决方案。各个业务系统将缓存数据通过map结构进行存储,然后在缓存系统中将这些map获取出来,然后保存在redis数据库中。技术经理想到的最好解决方案是将map集合直接存储在redis的hash表中。但是要求对hash......
  • CF1468N 题解
    洛谷链接&CF链接题目简述共有\(T\)组数据,对于每组数据:有三个桶,五种垃圾,每个桶有固定的容量。前三种垃圾分别放入三种桶中,第四种垃圾可以放进\(1,3\)桶中,第五种垃圾可以放进\(2,3\)桶中。问题:对于给定的桶容量和垃圾量,请问垃圾是否可以全部放入桶中?思路简单贪心题。......
  • CF479C 题解
    洛谷链接&CF链接题目简述一个人想要安排期末考试的时间。有\(n\)场考试,每场考试有两个时间\(x_i,y_i\),一个是老师规定的时间,另外一个是他与老师商量好的考试时间。如果错过了,那就只能按照原来的考试时间考试。规定:只能按照原定考试的日期顺序进行考试的情况下,输出考完试......
  • 饭票 题解
    1.题意简述某天小\(x\)去食堂吃饭,手里有\(n\)种饭票,面值分别为\(A_1~A_n\),数量分别为\(C_1~C_n\)请你计算小\(x\)的饭票能组成多少在\([1,m]\)区间内的面值。2.样例解释3101242118样例中,我们有两张一元,一张两元和一张四元,可以凑出\(1\)到\(8\)元中所......