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

大连里程科技做网站谷歌seo怎么优化

大连里程科技做网站,谷歌seo怎么优化,3合1网站建设,网站申请好了 怎么建设记录下 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://www.dtcms.com/wzjs/280386.html

相关文章:

  • php ajax网站开发典型实例网站制作免费
  • 政府找网站开发商要求百度推广首页
  • 英文集团网站设计建设网络广告文案案例
  • 农村自建房设计图120平方米三层百度关键词自然排名优化公司
  • 网上做网站兼职陕西网络营销优化公司
  • 网站开发网页超链接路径泉州百度广告
  • 哪个网站做系统好杭州网站建设公司
  • 淘宝客网站开发教程免费域名注册二级域名
  • 政府网站建设 政府采购十大接单推广app平台
  • 源码网棋牌海城seo网站排名优化推广
  • 网页设计师培训费用上海seo公司
  • 动态网站建设简介北京百度seo服务
  • 企商网站建设友情手机站
  • 个人网站备案所需材料百度游戏排行榜
  • 揭阳网站制作费用互联网营销师是干什么
  • 济南网站制作定制公司模板建站优点
  • 直播网站开发报价周口网站seo
  • 简答网站内容建设的时候内链重要性百度收录网址
  • 网站升级建设费用吗手机如何制作自己的网站
  • 如何管理手机网站首页保定网站制作
  • 网站建设管理人员工作职责怎么进行网站推广
  • 小程序二级分销系统seo网站系统
  • 学做婴儿衣服网站好链接交易网
  • 做校园二手交易网站的目的搜索引擎优化seo是什么
  • 抄袭网站案例关键词的分类和优化
  • 山东省建设人才网站百色seo外包
  • 电子印章在线制作网站网站优化公司开始上班了
  • 郑州做网站制作的公司有别人的交易链接怎么交易
  • 湘潭做网站价格优选磐石网络网络营销swot分析
  • 用php做网站的方法凡科建站代理