zoukankan      html  css  js  c++  java
  • 《算法竞赛入门经典》5.21小学生算术

     1 /*
     2 *很多学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个整数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,
     3  直到读到两个0(这是输入结束标记)。假设读入的整数都不超过9个数字。
     4 *样例输入:
     5 123 456
     6 555 555
     7 123 594
     8 0 0
     9 *样例输出:
    10 0
    11 3
    12 1
    13 */
    14 
    15 //源程序
    16 #include <stdio.h>
    17 
    18 int main()
    19 {
    20     int a, b;
    21     while(scanf("%d%d", &a, &b) == 2)
    22     {
    23         if(!a && !b) return;     //读到两个0,则输入结束
    24         int i, c = 0, ans = 0;    //c表示进位,ans表示进位个数
    25         for(i = 9; i >= 0; i--)
    26         {
    27             c = ((a%10 + b%10 + c) > 9) ? 1 : 0;
    28             ans += c;
    29             a /= 10; b /= 10;
    30         }
    31         printf("%d
    ", ans);
    32     }
    33     return 0;
    34 }
    35 /*分析:
    36 *int的上限约2000000000,可保存所有9位整数,因此用整数来保存输入数据。每次把a和b分别模10获得最低位。
    37 */
    38 
    39 //程序(2)
    40 #include<stdio.h>
    41 
    42 int main()
    43 {
    44     int m, n, i, t, k, a[3], b[3];    //t表示进位,k表示进位个数
    45     while(scanf("%d%d
    ", &m, &n) != EOF)
    46     {
    47         if( !(m||n) ) break;        //读到两个0,则跳出循环
    48         for(i = 0; i < 3; i++)
    49         {
    50             a[i] = m - (m/10) * 10;    //等价于a%10
    51             b[i] = n - (n/10) * 10;    //等价于b%10
    52             m /= 10;
    53             n /= 10;
    54         }
    55         for(i=k=t=0; i < 3; i++)
    56             if(t = ((a[i]+b[i]+t) / 10)) k++;
    57         printf("%d
    ", k);
    58     }
    59     return 0;
    60 }
    亲爱的读者:如果觉得本文对你有所帮助,请点击推荐,分享给其他人!
  • 相关阅读:
    openpyxl读取Excel数据
    查找xml中的接口名及涉及表名并输出
    sqlalchemy 简介
    linux文件查看
    网页的MVC模式简介
    python 最小二乘拟合,反卷积,卡方检验
    生成随机图片验证码
    图形界面
    requests(第三方模块) 请求、登录、下载网页
    ( 转 ) 什么是 JWT -- JSON WEB TOKEN
  • 原文地址:https://www.cnblogs.com/zhuangwei/p/5258715.html
Copyright © 2011-2022 走看看