求救
  • 板块灌水区
  • 楼主Cong256
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/2/25 12:02
  • 上次更新2024/2/25 15:29:40
查看原帖
求救
1106396
Cong256楼主2024/2/25 12:02

题目传送门

#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long mn=1e17;
long long f3(long long num,int t,int l){
	--l;
	int tmp=num%10;
	for(int i=0;i<=l;++i){
		num/=10;
	}
	num=num*10+t;
	for(int i=0;i<l;++i){
		num=num*10+tmp;
	}
	return num;
}
int main(){
	cin>>n>>m;
	int len=log10(n)+1;
	long long n_1=1;
	if(m==0){
		for(int i=1;i<len;i++){
			n_1*=10;
			n_1++;
		}
		long long  ans=(long long)ceil(n/(double)n_1)*n_1;
		printf("%lld",ans);
		return 0;
	}else{
		long long note=1;
		for(int i=1;i<len;i++){
			note*=10;
			note++;
		}
		for(int k=1;k<len;k++){
			long long ans1=(long long)(ceil(n/(double)note)-1)*note;
			for(int j=0;j<=9;j++){
				ans1=f3(ans1,j,k);
				if(ans1>=n)
					mn=min(mn,ans1);
			}
		}
		cout<<mn<<endl;
		return 0;
	}
}

数太大了double精度不够怎么办?

2024/2/25 12:02
加载中...