UVA11830 Contract Revision【文本处理】

For years, all contracts of the Association of Contracts for Modernization (ACM) were typed using an old typewriter machine.
    Recently Mr. Miranda, one of the accountants of the ACM, realized that the machine had a failure in one, and only one, numerical digit. More specifically, the flawed digit, when typed, is not printed on the sheet, as if the corresponding key was not pressed. He realized that this could have changed the numerical representation of contract values. Worried about accounting, Mr. Miranda wants to know, from the original values agreed for the contracts (which he kept in handwritten notes) which values are actually represented in the contracts. For example, if the failed digit in the machine is 5, an agreed value of 1500 would be represented in the corresponding contract as 100, because the digit 5 would not be printed. Note that Mr. Miranda wants to know the numeric value represented in the contract, ie, in the same machine, the number 5000 corresponds to the numeric value 0, not 000 (as it actually appears in the contract).
Input
The input consists of several test cases, each in one line. Each line contains two integers D and N (1 ≤ D ≤ 9 and 1 ≤ N < 10100), representing, respectively, the digit that has failed in the machine and the number that was originally agreed for the contract (which can be very large because of hiperinflation).
The last test case is followed by a line which contains only two zeros separated by white space.
Output
For each test case in the input your program must print one line containing a single integer, the numeric value represented in the contract.
Sample Input
5 5000000
3 123456
9 23454324543423
9 99999999991999999
7 777
0 0
Sample Output
0
12456
23454324543423
1
0

问题链接UVA11830 Contract Revision
问题简述:一个打印机可以打印数字,但是有1个数字打印不出来,计算打印结果。
问题分析
    输入不能打印的数字字符和一串字符,计算其输出结果。这个问题按理来说应该按字符来处理,代码写起来使用整数也许比较方便一些。但是,用字符也是可以处理的。这里给出2种题解程序。前一种程序必须保证每行输入的两个值之间由唯一的空格隔开。
程序说明:(略)
参考链接:(略)
题记:文本处理是绕不过去的问题。

AC的C++语言程序(字符处理)如下:

/* UVA11830 Contract Revision */

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    bool flag;
    while(getline(cin, s) && (s[0] != 0 && strcmp(&s[2], "0") != 0)) {
        flag = false;
        for(int i = 2; s[i]; i++)
            if(s[i] != s[0] && (flag || s[i] != '0')) {
                putchar(s[i]);
                flag = true;
            }
        if(flag == false) putchar('0');
        putchar('\n');
    }

    return 0;
}

AC的C++语言程序(使用整数)如下:

/* UVA11830 Contract Revision */

#include <bits/stdc++.h>

using namespace std;

const int N = 100;
char s[N + 1];

int main()
{
    int d, cnt;
    while(~scanf("%d%s", &d, s) && (d && strcmp(s, "0"))) {
        cnt = 0;
        for(int i = 0; s[i]; i++)
            if(s[i] != '0' + d && (cnt || s[i] != '0')) {
                putchar(s[i]);
                cnt++;
            }
        if(cnt == 0) putchar('0');
        putchar('\n');
    }

    return 0;
}
发布了2127 篇原创文章 · 获赞 2306 · 访问量 254万+

猜你喜欢

转载自blog.csdn.net/tigerisland45/article/details/104591328
今日推荐