2021级HAUT新生周赛

聚聚的Rating目标

题目描述

聚聚今晚又在玩某大型多人开黑(?)写bug游戏,聚聚的评价是:寄,掉大分!(事实上聚聚每次这样说最后都会上大分)。出Rating(分数)后聚聚会设定新的Rating目标。聚聚认为如果一个数字的各位数字中非零数字不超过 1 个,则该数可以被作为一个Rating目标。 

比如,600,10000,7 都是合理的Rating目标,而 12,3001,12345 则不是。 

现在,聚聚知道自己的Rating,记作n,请你告诉聚聚距离下一个Rating目标还差多少分? 
 

输入

一行,一个正整数n,且n<=100000 

输出

一行,一个正整数,表示当前Rating距离下一个Rating目标有多少分。 
 

样例输入 Copy

2021

样例输出 Copy

979

提示

样例解释:2021的下一个Rating目标是3000,相差979分 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int  n;
    scanf ("%d",&n);
    int m;
    m=n;
    int  s;
    int sss;
    int i=0;
    double ss;
    int p;
    while (m>0)
    {
        m=m/10;
        i++;
    }
    if(n<=9)
    {
        printf ("1");
    }
    else
    {
        ss=pow(10,i-1);
        sss=ss;

        s=((n/sss)+1)*sss;
        p=s-n;
        printf ("%d",p);

    }


    return 0;
}

我前面已经算出来n的位数了,就是i的值,
第一个if那里是假如n<=9的时候,根据题目的意思,我们只需要输出1就行了,这个还是比较好理解的。
else后面ss的值就是10的i-1次方,假如我们输入的值是2021,那么i就等于4,ss就等于1000,
但是ss的值我们是用的pow算的,pow的数据类型是double,所以对应的ss就是double类型,下面我们要用2021/1000,
假设我们不改变ss的数据类型的话,2021/1000=2.201,但是我想要的数是2,所以我需要把ss转换成整型的,这样2021/1000=2,
输入2021我们对应要输入的值就是3000-2021=979,
所以我要2021/1000=2之后,2再加1=3,3再乘于我们之前得到的1000,这样就得出来3000了,在程序里面我让s的值为3000,
同理的话不管我们输入哪个数,原理跟过程都是一样的,
p是我们要输出的值,也就是之前算出来的s减去我们之前输入的n

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟也有进大厂的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值