ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AtCoder Regular Contest 141 A - Periodic Number

2022-05-30 00:31:28  阅读:196  来源: 互联网

标签:tmp AtCoder PSI string Contest int 141 len first


搜刮来的测试数据:
1001
102938102922382938
2222222
12321
142857142856
99898
#include<bits/stdc++.h>
using namespace std;

typedef pair<string,int> PSI;

bool cmp(PSI x,PSI y){
	return stol(x.first)>stol(y.first);
}

int main(){
	int T;
	cin>>T;
	while(T--){
		string s;
		cin>>s;
		int len=s.length();
		vector<PSI> v;
		for(int i=len/2-1;i>=0;i--){
			if(len%(i+1)==0){
				int k=len/(i+1);
				string tmp=s.substr(0,i+1),cur=tmp;
				for(int j=0;j<k-1;j++) cur+=tmp;
				v.push_back({cur,k});
			}
		}
		sort(v.begin(),v.end(),cmp);
		while(stol(v[0].first)>stol(s)){
			int k=v[0].second;
			string &tmp=v[0].first;
			int stp=len/k;
			for(int i=stp-1;i<len;i+=stp){
				int pos=i;
				while(pos && tmp[pos]=='0'){
					tmp[pos]='9';
					pos--;
				}
				tmp[pos]-=1;
				if(pos==0 && tmp[pos]=='0'){
					tmp="9";
					for(int i=0;i<len-2;i++) tmp+="9";
					break;
				}
			}
			sort(v.begin(),v.end(),cmp);
		}
		cout<<v[0].first<<endl;
	}
	return 0;
}

标签:tmp,AtCoder,PSI,string,Contest,int,141,len,first
来源: https://www.cnblogs.com/xhy666/p/16325430.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有