jzoj3771-小Z的烦恼【高精度,数学】

正题


题目大意

mmm个盒子,
当第iii个盒子中放了xxx,那么i+1i+1i+1个盒子中就必须放2x2x2xi&lt;=mi&lt;=mi<=m)。
1∼n1\sim n1nmmm个盒子,求第一个盒子中可以放多少个


解题思路

1号盒子中的肯定越小越好。
要求满足条件那么首先x∗2m−1≤nx*2^{m-1}\leq nx2m1n
那么x≤n/2m−1x\leq n/2^{m-1}xn/2m1
然后奇数是肯定可以放进去的,
然后对于每个
xxx,会封锁x∗2i(i&lt;m)x*2^i(i&lt;m)x2i(i<m)
之和我们会发现x∗2mx*2^mx2m又可以放进去了。
以此类推
我们可以发现x∗2km(x%2==1,k≥0)x*2^{km}(x\%2==1,k\geq0)x2km(x%2==1,k0)
所以我们考虑枚举kkk
开始先计算最大的xxx,统计一次奇数个数。
其实枚举kkk,就是每次让nnn除与2m2^m2m,然后统计一遍奇数个数。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll mod=1e11;
const ll W=1000;
ll a[W+10],ans[W+10],m,t,l,al;
char s[W*10+10];
void print(ll x){if (x>9) print(x/10); putchar(x%10+48); return;
}
void init()
{memset(s,0,sizeof(s));scanf("%s",s+1);scanf("%lld",&m);l=strlen(s+1);ll t=0,k=1;for(ll i=l;i>=1;i--){a[t]+=(s[i]-48)*k;k*=10;if(k==mod) t++,k=1;}l=W;al=0;
}
void div(ll x)
{ll g=0;for(ll i=l;i>=0;i--){a[i]+=g*mod;g=a[i]%x;a[i]/=x;}while(!a[l]&&l>=0) l--;
}
void count_odd(){ll g=0,i;ans[0]+=a[0]%2;for(i=l;i>=0;i--){ans[i]+=(a[i]+g*mod)/2;g=a[i]%2;}ll t=max(l-1,al);if(ans[t+1]) t++;for(i=0;i<=t;i++)if(ans[i]>=mod){ans[i+1]++;ans[i]-=mod;}if(ans[i]>0) al=i;else al=i-1;
}
void write()
{print(ans[al]);while(al--){if(ans[al]<1e10) putchar(48);if(ans[al]<1e9) putchar(48);if(ans[al]<1e8) putchar(48);if(ans[al]<1e7) putchar(48);if(ans[al]<1e6) putchar(48);if(ans[al]<1e5) putchar(48);if(ans[al]<1e4) putchar(48);if(ans[al]<1e3) putchar(48);if(ans[al]<1e2) putchar(48);print(ans[al]);}putchar('\n');
}
int main()
{scanf("%lld",&t);while(t--){memset(a,0,sizeof(a));memset(ans,0,sizeof(ans));init();div(1<<(m-1));count_odd();while(a[0]){div(1<<m);count_odd();}write();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云短信服务使用记录与.NET Core C#代码分享

1、即使是相同的短信签名与短信正文模板&#xff0c;也需要针对“国内文本短信”与“海外文本短信”分别申请。开始不知道&#xff0c;以为只要申请一次&#xff0c;给国外手机发短信时给api传对应的国家码就行&#xff0c;后来才发现需要分别申请。 2、短信服务web api响应“手…

Vue动画效果

.v-enter,.v-leave-to {opacity: 0;transform: rotateY(120deg);}.v-enter-active,.v-leave-active {transition: all 1s ease;}<transition><div v-cloak v-show"flag"><span classbadge>李白 </span><span idinput-size>善良之人啊&…

vue 安装教程

vue 安装教程在这里&#xff01;&#xff01;&#xff01;

Hadoop入门(九)Mapreduce高级shuffle之Combiner

一、Combiner的出现 &#xff08;1&#xff09;为什么需要进行Map规约操 作 在上述过程中&#xff0c;我们看到至少两个性能瓶颈&#xff1a; &#xff08;1&#xff09;如果我们有10亿个数据&#xff0c;Mapper会生成10亿个键值对在网络间进行传输&#xff0c;但如果我们只…

欢乐纪中某A组赛【2019.1.19】

前言 因为BBB有一堆(两道)题都做过&#xff0c;于是就来做A组了。 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC3332017myself2017myself2017myself2102102101001001001001001001010102222222017lrz2017lrz2017lrz1001001000001001…

使用Identity Server 4建立Authorization Server (2)

第一部分: 使用Identity Server 4建立Authorization Server (1) 第一部分主要是建立了一个简单的Identity Server. 接下来继续: 建立Web Api项目 如图可以在同一个解决方案下建立一个web api项目: (可选)然后修改webapi的launchSettings.json, 我习惯使用控制台, 所以把IISExpr…

建立Vue脚手架的必要性

首先所有文件都放到一个html&#xff0c;代码多了之后阅读体验非常差。 其次建立这样的文件夹后&#xff0c;发现竟然不能随时更新&#xff0c;有缓存的情况

【实验手册】使用Visual Studio Code 开发.NET Core应用程序

.NET Core with Visual Studio Code 目录 概述... 2 先决条件... 2 练习1&#xff1a; 安装和配置.NET Core以及Visual Studio Code 扩展... 2 任务1&#xff1a;安装Visual Studio Code和.NET Core. 2 任务2&#xff1a;安装插件... 4 练习2&#xff1a;使用命令行界面构建. N…

P3806-【模板】点分治1

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP3806 题目大意 一颗树&#xff0c;k个询问&#xff0c;求是否存在长度为lil_ili​的路径。 解题思路 开个桶就好了&#xff0c;点分治不解释。 codecodecode #include<cstdio> #include<a…

Hadoop入门(八)Mapreduce高级shuffle之Partitioner

一、Partitioner概述 Map阶段总共五个步骤&#xff0c;2就是一个分区操作 哪个key到哪个Reducer的分配过程&#xff0c;是由Partitioner规定的。 二、Hadoop内置Partitioner MapReduce的使用者通常会指定Reduce任务和Reduce任务输出文件的数量&#xff08;R&#xff09;。 用…

vue调用methods里的方法

刚学vue的时候&#xff0c;以为要想方法自启动&#xff0c;只能通过生命周期函数的钩子。 而methods里的函数大多用ckick进行调用 要想直接启用里面的方法&#xff0c;给挂载的vue一个名字就行了&#xff0c;如下 var app new Vue({el: "#app",methods:{aaa:functi…

在ASP.NET Core中使用AOP来简化缓存操作

前言 关于缓存的使用&#xff0c;相信大家都是熟悉的不能再熟悉了&#xff0c;简单来说就是下面一句话。 优先从缓存中取数据&#xff0c;缓存中取不到再去数据库中取&#xff0c;取到了在扔进缓存中去。 然后我们就会看到项目中有类似这样的代码了。 public Product Get(int p…

Hadoop入门(七)Mapreduce高级Shuffle

一、Shuffle概述 Reduce阶段三个步骤&#xff0c;Shuffle就是一个随机、洗牌操作 Shuffle是什么 针对多个map任务的输出按照不同的分区&#xff08;Partition&#xff09;通过网络复制到不同的reduce任务节点上&#xff0c;这个过程就称作为Shuffle。 二、Shuffle过程 &#…

methods中axios里的数据无法渲染到页面

最近在研究axios聊天室室遇到一个问题 将axios获取到的数据传递给data&#xff0c;从而改变页面中的数值&#xff0c;但是结果令人失望 这是data里的数据 原想将data中的items数组换成axios里的response.data&#xff0c;后来发现items一直为空&#xff0c;就拿字符串做实验了…

jzoj4229-学习神技【逆元,费马小定理】

正题 题目大意 求 (∑i1na∗qi)mod(1097)(\sum_{i1}^na*q^i)\ mod\ (10^97)(i1∑n​a∗qi) mod (1097) 解题思路 题目里都给出公式 ∑i1na∗qia∗(1−qn)1−q\sum_{i1}^na*q_i\frac{a*(1-q^n)}{1-q}i1∑n​a∗qi​1−qa∗(1−qn)​ 其实就是 a∗(qn−1)q−1\frac{a*(q^n-1)}{…

.NET Core跨平台的奥秘[上篇]:历史的枷锁

微软推出的第一个版本的.NET Framework是一个面向Windows桌面和服务器的基础框架&#xff0c;在此之后&#xff0c;为此微软根据设备自身的需求对.NET Framework进行裁剪&#xff0c;不断推出了针对具体设备类型的.NET Framework版本以实现针对移动、平板和嵌入式设备提供支持。…

Hadoop入门(十)Mapreduce高级shuffle之Sort和Group

一、排序分组概述 MapReduce中排序和分组在哪里被执行 第3步中需要对不同分区中的数据进行排序和分组&#xff0c;默认情况按照key进行排序和分组 二、排序 在Hadoop默认的排序算法中&#xff0c;只会针对key值进行排序 任务&#xff1a; 数据文件中&#xff0c;如果按照第一…

Js使滑轮到最底部

在做ajax的聊天室页面时&#xff0c;新数据总是不能显示出来&#xff0c;需要下翻&#xff0c;所以必须在setInterval(“app.aaa()”, 1000)中aaa函数里添加一个可以使滑轮在底部的代码 加入 div1 document.getElementById("div1") div1.scrollTop div1.scrollHe…

jzoj4230-淬炼神体【0/1分数规划】

正题 题目大意 nnn个东西&#xff0c;有ai,bia_i,b_iai​,bi​。选择kkk个&#xff0c;使得∑ai/∑bi\sum a_i/\sum b_i∑ai​/∑bi​最大。 解题思路 ∑ai/∑bik\sum a_i/\sum b_ik∑ai​/∑bi​k ∑ai/∑bi/k1\sum a_i/\sum b_i/k1∑ai​/∑bi​/k1 ∑ai/k∑bi\sum a_i/k\sum…

使用Identity Server 4建立Authorization Server (3)

预备知识: 学习Identity Server 4的预备知识 第一部分: 使用Identity Server 4建立Authorization Server (1) 第二部分: 使用Identity Server 4建立Authorization Server (2) 上一部分简单的弄了个web api 并通过Client_Credentials和ResourceOwnerPassword两种方式获取token然…