码迷,mamicode.com
首页 > 其他好文 > 详细

九余法

时间:2016-07-19 20:35:20      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

描述

设计一个程序求出A*B,然后将其结果每一位相加得到C,如果C的位数大于等于2,继续将C的各位数相加,直到结果是个一位数k。

例如:

6*8=48;

4+8=12;

1+2=3;

输出3即可。

 
输入
第一行输入一个数N(0<N<=1000000),表示N组测试数据。
随后的N行每行给出两个非负整数m,n(0<=m,n<=10^12)。
输出
对于每一行数据,输出k。
样例输入
3
6 8
1234567 67
454 1232
样例输出
3
4
5


这道题可以用弃九法(九余数),但要记得特殊情况。
即a或b等于0的情况。

#include<stdio.h>
#include<stdlib.h>
int main()
{
      int t;
      scanf("%d",&t);
      while(t--)
      {
            long long int a,b,c;
            scanf("%lld%lld",&a,&b);
            if(a==0||b==0)
            {
                  printf("0\n");
                  continue;
            }
            c=(a%9)*(b%9)%9;
            if(c==0)
                  c=9;
            printf("%d\n",c);
      }
      return 0;
}

另附:

九余法在求一个大数对9取余的时候也能用到

 

九余法

标签:

原文地址:http://www.cnblogs.com/LiShaopeng/p/5685875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!