简单网站建设哪家便宜网络服务提供者发现用户利用其网络
简单网站建设哪家便宜,网络服务提供者发现用户利用其网络,专业做网站建设公司有哪些,苏州网站建设书生正题 题目大意 mmm个盒子#xff0c; 当第iii个盒子中放了xxx#xff0c;那么i1i1i1个盒子中就必须放2x2x2x#xff08;imimim#xff09;。 求1∼n1\sim n1∼n#xff0c;mmm个盒子#xff0c;求第一个盒子中可以放多少个 解题思路
1号盒子中的肯定越小越好…正题 题目大意
mmm个盒子 当第iii个盒子中放了xxx那么i1i1i1个盒子中就必须放2x2x2xilt;milt;mim。 求1∼n1\sim n1∼nmmm个盒子求第一个盒子中可以放多少个 解题思路
1号盒子中的肯定越小越好。 要求满足条件那么首先x∗2m−1≤nx*2^{m-1}\leq nx∗2m−1≤n 那么x≤n/2m−1x\leq n/2^{m-1}x≤n/2m−1。 然后奇数是肯定可以放进去的 然后对于每个 xxx会封锁x∗2i(ilt;m)x*2^i(ilt;m)x∗2i(im)。 之和我们会发现x∗2mx*2^mx∗2m又可以放进去了。 以此类推 我们可以发现x∗2km(x%21,k≥0)x*2^{km}(x\%21,k\geq0)x∗2km(x%21,k≥0) 所以我们考虑枚举kkk。 开始先计算最大的xxx统计一次奇数个数。 其实枚举kkk就是每次让nnn除与2m2^m2m然后统计一遍奇数个数。 codecodecode
#includecstdio
#includecstring
#includealgorithm
#define ll long long
using namespace std;
const ll mod1e11;
const ll W1000;
ll a[W10],ans[W10],m,t,l,al;
char s[W*1010];
void print(ll x){if (x9) print(x/10); putchar(x%1048); return;
}
void init()
{memset(s,0,sizeof(s));scanf(%s,s1);scanf(%lld,m);lstrlen(s1);ll t0,k1;for(ll il;i1;i--){a[t](s[i]-48)*k;k*10;if(kmod) t,k1;}lW;al0;
}
void div(ll x)
{ll g0;for(ll il;i0;i--){a[i]g*mod;ga[i]%x;a[i]/x;}while(!a[l]l0) l--;
}
void count_odd(){ll g0,i;ans[0]a[0]%2;for(il;i0;i--){ans[i](a[i]g*mod)/2;ga[i]%2;}ll tmax(l-1,al);if(ans[t1]) t;for(i0;it;i)if(ans[i]mod){ans[i1];ans[i]-mod;}if(ans[i]0) ali;else ali-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(1m);count_odd();}write();}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85780.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!