首页 > 其他分享 >P8431

P8431

时间:2024-02-17 21:01:59浏览次数:26  
标签:int ++ len P8431 flag flag2

#include<cstring>
#include<cstdio>
using namespace std;
char s[50];
int len;
signed main()
{
	int T;
	scanf ("%d", &T);
	while (T--)
	{
		scanf ("%s", s);
		len = strlen(s);
		bool flag = 0, flag2 = 1;//flag用来标记有没有不是9的;flag2则是标记后面有无非0数字 
		for (int i = 0;i < len; i++)
		{
			if (flag)
				break;
			if (s[i] != '9')
			{
				for (int j = i + 1;j < len; j++)
				{
					if (s[j] != '0')//如果有非零就标为0 
						flag2 = 0;
					if (j == len - 1)//如果是最后一个字符,该位就转换成 1 
						s[j] = '1';
					else
						s[j] = '0';
				}
				if (!flag2 || i == len - 1)//如果有非零或者i是最后一个,就要加1; 
					s[i]++;
				flag = 1; 
			}
		}
		if (!flag)//如果全部都是9,那么就输出10000···000,其中0的个数和9一样 
		{
			printf("1");
			for (int i = 1;i <= len; i++)
				printf("0");
			puts("");
			continue;
		}
		s[0]--; 
		for (int i = len - 1;i >= 0; i--)//直接输出即可 
			printf ("%c", s[i]);
		puts("");
	}
	return 0;
}

标签:int,++,len,P8431,flag,flag2
From: https://www.cnblogs.com/Assassins-Creed/p/18018392

相关文章

  • P8431 题解
    前言题目传送门!更好的阅读体验?这题题解都写得特别复杂,蒟蒻看不懂。因此,我补一篇简单的贪心题解。思路题目等同于求最小的\(p\)使得\(f(p)>n\),则\((p-1)\)就是答......