专栏文章
题解:P13729 【MGVOI R1-A】超级奇数(odd)
P13729题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mioau0kl
- 此快照首次捕获于
- 2025/12/02 16:11 3 个月前
- 此快照最后确认于
- 2025/12/02 16:11 3 个月前
题意
给你 个正整数 ,要加上一个的正整数 ,使其 成为超级奇数,问你最小的 是多少?
超级奇数的定义
对于一个正整数,如果其中的每一位都是奇数,则定义它是一个超级奇数。
思路
因为每一个数 都较大,所以依次从 往上加,一个一个数的尝试,是不行的。
所以本题考虑贪心,因为这个数的位数较少,所以我们可以从最高位到最低位依次遍历。找到第一位不是奇数的位,那么就要将这一位的数字增加,使其变为奇数,也就是将这一位加 ,然后让这后面所有的数字都变为 。
让这个数与从那一位偶数开始后的 相减,就是我们要求的 。
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
signed main()
{
cin>>t;
while(t--)
{
string s;
cin>>s;
int s1=0,s2=0;
for(int i=0;i<s.size();i++)
if((s[i]-'0')%2==1) continue;
else
{
s1+=(s[i]-'0')+1;
s2+=(s[i]-'0');
for(int j=i+1;j<s.size();j++)
{
s1=s1*10+1;
s2=s2*10+(s[j]-'0');
}
break;
}
cout<<s1-s2<<endl;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...