PAT-A1058 A+B in Hogwarts (20)(模拟)

来源:互联网 发布:网络打印机搜索不到 编辑:程序博客网 时间:2024/06/14 02:48

和乙级一个题目差不多,这个更简单,但是如果还用以前的方法会溢出,有一个测试过不了。

溢出代码:

include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>using namespace std;int main(){    freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    int g1, s1, k1, g2, s2, k2;    scanf("%d.%d.%d", &g1, &s1, &k1);    scanf("%d.%d.%d", &g2, &s2, &k2);    int t1 = g1*17*29 + s1*29 + k1;    int t2 = g2*17*29 + s2*29 + k2;    int t = t1 + t2;    int g = t/(17*29), s = (t%(17*29))/29, k = t-g*(17*29)-s*29;    printf("%d.%d.%d", g, s, k);    return 0;}

通过代码:

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>using namespace std;int main(){    freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    int g1, s1, k1, g2, s2, k2;    scanf("%d.%d.%d", &g1, &s1, &k1);    scanf("%d.%d.%d", &g2, &s2, &k2);    int g = 0, s = 0, k = 0;    k = (k1+k2)%29;    s = ((k1+k2)/29 + s1 + s2)%17;    g = ((k1+k2)/29 + s1 + s2)/17 + g1 + g2;    printf("%d.%d.%d", g, s, k);    return 0;}


0 0