位运算1

(bit)

Time Limit:1000ms   Memory Limit:128MB

 

题目描述

LYK拥有一个十进制的数N。它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值。例如数字123拥有6的价值,数字999拥有27的价值。

假设数字N的价值是K,LYK想找到一个价值是K-1的数字,当然这个答案实在太多了,LYK想使得这个价值为K-1的数字尽可能大。

 

输入格式(bit.in)

    一个数N。

 

输出格式(bit.out)

一个数表示答案。你需要输出一个非负整数,且这个数不包含前导0。

 

输入样例1

199

 

输出样例1

198

 

输入样例2

1000

 

输出样例2

0

 

对于20%的数据n<=10

对于40%的数据n<=100

对于60%的数据n<=1000

对于100%的数据1<=n<=100000。

#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 10
int n,bit[maxn],len;
int main(){
    freopen("bit.in","r",stdin);freopen("bit.out","w",stdout);
    scanf("%d",&n);
    while(n){
        bit[++len]=n%10;
        n/=10;
    }
    int now=1;
    while(bit[now]==0)now++;
    bit[now]--;
    while(bit[len]==0&&len>=1)len--;
    if(len==0)printf("0");
    else
    for(int j=len;j>=1;j--)printf("%d",bit[j]);
    fclose(stdin);fclose(stdout);
    return 0;
}
100分

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-26
  • 2021-05-31
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-16
  • 2022-01-08
相关资源
相似解决方案