The 13th UESTC Programming Contest Preliminary—— F - Fabricate equation

来源:互联网 发布:jquery-ui.min.js 编辑:程序博客网 时间:2024/06/06 07:42

解题思路:思路:贪心。倒着扫描,遇到0就忽略,因为对应被减数的该位也设0就好;遇到9,这个特殊,因为比如290-191=99,后面进位后,9这个位也可以使得被减数与结果的该位相同,这样的情况需要两个条件:必须后面可以进位。假如减数那位为0,不论结果为什么,都无法产生进位。第二个条件是,被减数的前一位可以借位,也就是说9这种情况完成后,即便前面遇到减数那位为0,也不能再忽略,只能当一般情况处理。一般情况自然就是k++。

官方题解:

Code:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;char c[25];int main(){    scanf("%s",c+1);    int l=strlen(c+1),k=0;    c[l+1]='0';c[0]='0';    for(int i=l;i>0;i--)    {        if(c[i]=='0')   continue;        if(c[i]=='9')        {            if(c[i+1]=='0')            {                k++;                continue;            }            else            {                if(c[i-1]=='0') c[i-1]++;//把前面的0毁掉                continue;            }        }        else        {            k++;        }    }    if(c[0]!='0')   k++;    printf("%d\n",k);    return 0;}


0 0
原创粉丝点击