zoukankan      html  css  js  c++  java
  • UVA 10494 If We Were a Child Again(大数与整型相除取整和取余)

          这道题让选手模拟相除和取余的过程,由于除数为整型,使得这道题的难度大大减小。要注意在模拟取余和相处的时候,中间的临时数会超过整型范围。

          提供一个数据:21474836447 / 2147483647

    #include <stdio.h>
    #include <string.h>
    
    // 大数字符串str与整型x相除,商赋给str
    void myDiv(char str[], int x) {
        int b[10000], len = strlen(str);
    
        for (int i=0; i<len; i++)
            b[i] = str[i] - '0';
    
        long long cp = 0;   // 注意这里的long long
        for (int i=0; i<len; i++) {
            long long tmp = b[i] + cp*10;
                            // 注意这里的long long
            b[i] = tmp / x;
            cp = tmp % x;
        }
    
        // 修正前面的0然后将结果赋给str字符串
        int i = 0, j;
        while (i<len && 0==b[i])
            i++;
        if (i == len) {
            str[0] = '0';
            str[1] = '\0';
        }
        else {
            for (j=i, i=0; j<len; j++)
                str[i++] = b[j] + '0';
            str[i] = '\0';
        }
    }
    
    // 大数字符串str与整型x取余,余数返回
    int myMod(char str[], int x) {
        int len = strlen(str);
        long long tmp = 0;  // 注意这里的long long
    
        for (int i=0; i<len; i++) {
            tmp = tmp*10 + str[i]-'0';
            tmp %= x;
        }
    
        return tmp;
    }
    
    int main() {
        char str[10000], ch[5];
        int n;
    
        while (scanf("%s %s %d", str, ch, &n) != EOF) {
            if (ch[0] == '/') {
                myDiv(str, n);
                printf("%s\n",str);
            }
            else {
                int x = myMod(str, n);
    
                printf("%d\n", x);
            }
        }
    
        return 0;
    }
    


     

  • 相关阅读:
    jQuery:提交表单前判断表单是否被修改过
    jQuery multiselect的使用
    input[file]标签的accept=”image/*”属性响应很慢的解决办法
    Linux-read命令
    shell编程学习
    优化网站加载速度
    select下拉框选中问题
    QTableWidget class
    QLabel class
    QMainWindow class
  • 原文地址:https://www.cnblogs.com/zcube/p/4194560.html
Copyright © 2011-2022 走看看