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

想给学校社团做网站wordpress知更鸟企业主题

想给学校社团做网站,wordpress知更鸟企业主题,用python做 网站论坛,wordpress开启七牛记录下 A 题赤石过程 \sout{记录下A题赤石过程} 记录下A题赤石过程 套着数学外衣的字符串模拟题,首先,题目要求大于 n n n 的最小的 m m m 的倍数或者数字中出现 m m m 大于不好处理,我们给它加 1 1 1 变为大于等于,这样如果…

记录下 A 题赤石过程 \sout{记录下A题赤石过程} 记录下A题赤石过程

在这里插入图片描述

套着数学外衣的字符串模拟题,首先,题目要求大于 n n n 的最小的 m m m 的倍数或者数字中出现 m m m

大于不好处理,我们给它加 1 1 1 变为大于等于,这样如果就是 + 1 +1 +1 的那个数也可以直接输出

首先我们将 n + 1 n+1 n+1 m m m 的倍数或者 n + 1 n+1 n+1 包含 m m m 的情况判掉,那么剩下的需要加上一些数构造 m m m 的倍数,或者数字中有 m m m 。首先我们会有一个上界,就是构造 m m m 的倍数所需要的数 r g rg rg ,我们加的数不超过 r g rg rg .

m m m 的数位为 j j j

然后我们考虑数字中构造 m m m ,一般的,我们发现其实只要数字最后的 18 18 18 位即可,因为 m ≤ 1 0 9 m\leq10^9 m109,我们每次让后缀从 i i i 开始变成 0 0 0,第 i i i 位之前的 j j j 位变成 m m m ,变成 m m m 也有两种情况一种是那 j j j 位数大于 m m m ,我们需要要让这些位都变成 0 0 0 , 然后再让那 j j j 位变成 m m m ,另一种情况就是那 j j j 位数小于 m m m ,我们只要让他们变成 m m m 即可。

特别的,我们还有一些特殊的情况,通过某些进位,让很前面的数变成 m m m ,那我们就去匹配 m − 1 m-1 m1 ,代价是让后缀全变 0 0 0 的代价,我们只需要找一次,做一次 1 e 6 1e6 1e6 的高精度减法是可以接受的

最后用 n + 1 n+1 n+1 加上我们需要额外加的数 c o s t cost cost 即是答案

还有一个特判,如果 n ≤ m n\leq m nm,答案就是 m m m

#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using u64 = unsigned long long;
using i128 = __int128;string add(string &a,string &b) {int n = a.size(), m = b.size();int L = max(n, m);string res;res.reserve(L + 1);int carry = 0;for (int i = 0; i < L; ++i) {int da = (i < n ? a[i] - '0' : 0);int db = (i < m ? b[i] - '0' : 0);int sum = da + db + carry;res.push_back(char('0' + (sum % 10)));carry = sum / 10;}if (carry) {res.push_back(char('0' + carry));}//结果自然没有“前导”零的问题,因为倒序,低位在前return res;
}string subtract(const string &a, const string &b) {int n = a.size(), m = b.size();string res;res.reserve(n);int borrow = 0;for (int i = 0; i < n; ++i) {int da = a[i] - '0' - borrow;int db = (i < m ? b[i] - '0' : 0);if (da < db) {da += 10;borrow = 1;} else {borrow = 0;}res.push_back(char('0' + (da - db)));}// 去掉“高位”多余的 0(即倒序串末尾的 '0')while (res.size() > 1 && res.back() == '0') {res.pop_back();}return res;
}u64 to_num(string &s){          //倒着的数字u64 res = 0;for(int i=s.size()-1;i>=0;--i){res = res*10ll+(s[i]-'0');}return res;
}string s;
u64 m,lm,lmminus1,ls,rg=0;
u64 base[22];void solve(){rg=0;//清空 cin>>s>>m;string sm = to_string(m);string mminus1 = to_string(m-1);reverse(s.begin(),s.end());reverse(sm.begin(),sm.end());reverse(mminus1.begin(),mminus1.end());string one = "1";string sadd1 = add(s,one);swap(sadd1,s);//s+=1if(s.size()<=sm.size()){u64 ss= to_num(s),ssm = to_num(sm);if(ss<=ssm){cout<<ssm<<"\n";return;}}ls = s.size(),lm = sm.size(),lmminus1 = mminus1.size();//求可加上界u64 b = 1;for(int i = 0;i<ls;++i){(rg+=(1LL*(s[i]-'0')*b)%m)%=m;(b*=10LL)%=m;}rg = m-rg;if(rg==m){      //已经是倍数reverse(s.begin(),s.end());cout<<s<<"\n";return;}//查看数字中有没有mfor(int i = 0;i+lm-1<ls;++i){string tmp = s.substr(i,lm);u64 tmp_num = to_num(tmp);if(tmp_num==m){reverse(s.begin(),s.end());cout<<s<<"\n";return;}}u64 cost = rg;//从个位匹配m,匹配18位for(int i = 0;i+lm-1<=18&&i+lm-1<ls;++i){string tmp = s.substr(i,lm);            //本来就是反着的u64 tmp_num=to_num(tmp);//cout<<i<<" "<<tmp_num<<" ";if(tmp_num<=m){string tmp2=s.substr(0,i);u64 tmp_num2 = to_num(tmp2);cost = min(cost,(m-tmp_num)*base[i]-tmp_num2);}else{if(i==0) continue;   //如果是个位,没有办法补0string tmp2=string(i+lm,'0')+"1"; //索引是i+lm-1 总数要加1string tmp3 = to_string(m*base[i]);//00000mstring res = subtract(tmp2,tmp3);if(res.size()>18){continue;   //肯定超出上限}else{cost = min(cost,to_num(res));}}}//从十位匹配m-1,找离个位最近的,只做一次for(int i = 1;i+lmminus1-1<ls;++i){string tmp = s.substr(i,lmminus1);if(tmp==mminus1){//匹配上了,花费是最低位j 10^j-后缀string now1 = string(i,'0')+sm; //0000smstring now2;if(i>0) now2=s.substr(0,i)+mminus1;//xxxxxtmpelse now2=mminus1;string res = subtract(now1,now2);if(res.size()>18){break;  //肯定超出上限}else{cost = min(cost,to_num(res));}break;}else continue;}string cost_str = to_string(cost);reverse(cost_str.begin(),cost_str.end());string ans = add(s,cost_str);reverse(ans.begin(),ans.end());cout<<ans<<'\n';
}signed main(){ios::sync_with_stdio(0);cin.tie(0);base[0]=1;for(int i = 1;i<=19;++i) base[i] = base[i-1]*10LL;int t=1;cin>>t;while(t--) solve();return 0;
}

文章转载自:

http://5HDAlNBX.frzdt.cn
http://GCtehXzk.frzdt.cn
http://t2PqwjX2.frzdt.cn
http://Ar9aJtwi.frzdt.cn
http://zF5vI8kg.frzdt.cn
http://Kq5CVeB9.frzdt.cn
http://jBwUsfwC.frzdt.cn
http://RL96IlqU.frzdt.cn
http://kQvSbzXp.frzdt.cn
http://dTCGNU58.frzdt.cn
http://NTtIo5nb.frzdt.cn
http://V87QOIOQ.frzdt.cn
http://bEpa8cAh.frzdt.cn
http://24b1WLmF.frzdt.cn
http://ebxlHKX3.frzdt.cn
http://fYGpI7MP.frzdt.cn
http://rDZ02rar.frzdt.cn
http://fIVkiNFh.frzdt.cn
http://1i5x4Gwy.frzdt.cn
http://Vj9gx8de.frzdt.cn
http://TFEDDb0Z.frzdt.cn
http://4qLP3sA3.frzdt.cn
http://geQ8LkZ4.frzdt.cn
http://XnZ0smul.frzdt.cn
http://QjnkOgwT.frzdt.cn
http://BXq1CaU3.frzdt.cn
http://qQ9wqzO1.frzdt.cn
http://oLkNGC00.frzdt.cn
http://6kmSvuFL.frzdt.cn
http://niVbNGzn.frzdt.cn
http://www.dtcms.com/wzjs/709440.html

相关文章:

  • 杭州网站定制开发湖南省郴州市嘉禾县邮政编码
  • 网站代理什么意思wordpress标签大全文档
  • 深圳建网站公司 哪家售后服务最好wordpress 分类层级
  • 网站的seo优化报告seo优化是什么职业
  • 关于个人工作室网站模板景区网站建设策划书
  • 旅游网站的设计与实现开题报告建筑做网站
  • 银川网站建设哪家便宜什么是网站设计与建设
  • 聊城网站案例地方门户模板
  • 做网站怎么收费微商如何做网站引流
  • 传媒在线网站模板关于小城镇建设网站
  • 凡客网站可以建设会员系统吗平台引流推广怎么做
  • 大闸蟹公司宣传册设计样本济南seo推广
  • wordpress多站点怎么安装主题上海营销型网站建设费用
  • 上海专业网站建设网drupal 和wordpress
  • 建行官方网站首页青海建设厅质检站网站
  • 网站开发实习报告比较大的软件下载网站
  • 安卓网站客户端制作软件网站认证免费
  • 株洲seo优化首选网站优化包括对什么优化
  • 百度网站官网入口网址wordpress下拉框插件
  • 怎样在工商局网站做公示模拟装修设计app免费
  • 网站的建议电商网站建设课件
  • 嘉定西安网站建设关于进一步加强网站建设
  • 做外链的博客网站网站与微信结合
  • 郑州网站建设学校企业网站用户群
  • 丹灶网站建设哪些网站比较容易做
  • 免费网站统计做视频网站怎么备案
  • 月刊可以用什么网站做学编程多少钱学费
  • 广州市公司网站建设品牌江苏兴力建设集团有限公司网站
  • 定安免费建站公司建设商城网站视频教学
  • 留言板网站怎么做用wordpress做论坛好吗