A*B Problem

描述

设计一个程序求出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

这道题目和之前的 http://www.cnblogs.com/liugl7/p/5362552.html 很像,在那道题中就总结了一个规律,就是:一个大数对9取余等于这个数各位数字之和对9取余。现在根据这个题目的意思,是反过来了。题目中说,这个数的各个位的数字之和一直处理到个位数。  我们经过演算可以得知计算“一个数W=mn的这样的运算”的结果可以用(W-1)%9+1直接得到。

而 mn-1 = (m-1 +1)(n-1 +1)-1 = (m-1)(n-1)+(m-1) + (n-1)+1 - 1 = (m-1)(n-1)+(m-1) + (n-1)

所以(mn-1)%9 = [(m-1)(n-1)+(m-1) + (n-1) ]%9 = [(m-1)(n-1)%9+(m-1)%9 + (n-1)%9]%9= { [(m-1)%9+1] * [(n-1)%9+1]  -1   }%9

即 结果A=  (mn-1)%9 +1 =  { [(m-1)%9+1] * [(n-1)%9+1]  -1   }%9 +1

  这样就把m和n的位数降下来了,可以直接输入m、n然后对9取模; 如果遇到了long long 存不下的数,可以运用http://www.cnblogs.com/liugl7/p/5362552.html 中的处理方法,充分运用10X≡9X+X≡X(mod 9)来完成 m%9和n%9的运算。

AC代码如下:

 #include<stdio.h>
int main(){
long long m,n;
int temp,ans,t;
scanf("%d",&t);
while(t--){
scanf("%lld%lld",&m,&n);
temp = ( (m-)% +) * ( (n-)%+);
ans = (temp-)% +;
printf("%d\n",ans);
}
return ; }

不过需要mark的是“9余数定理”这个东西,【一个数的各位数字之和想加后得到的<10的数字称为这个数的九余数(如果相加结果大于9,则继续各位相加)】9余数定理的其中一条有:两个因数的九余数相乘,所得的数的九余数应当等于两个因数的乘积的九余数。关于这个“9余数”,还有一个比较好玩的应用是计算“从1到1024排成一个数除以9,余数是多少?”  http://www.zhihu.com/question/26033918

这里面充分应用了10X≡9X+X≡X(mod 9)这个性质,顺带手还有9余数定理的体现。

经过本题,我们可以发现  计算一个数W的9余数的公式是  (W-1)%9+1   ,看到这的都是真爱啊,那么,不妨心中怀着这个公式从头再来一遍吧,相信这遍,会更清晰。

NYOJ 485的更多相关文章

  1. NYOJ 1007

    在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...

  2. NYOJ 998

    这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...

  3. NYOJ 333

    http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ...

  4. NYOJ 99单词拼接(有向图的欧拉(回)路)

    /* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i ...

  5. nyoj 10 skiing 搜索+动归

    整整两天了,都打不开网页,是不是我提交的次数太多了? nyoj 10: #include<stdio.h> #include<string.h> ][],b[][]; int ...

  6. 简答哈希实现 (nyoj 138 找球号2)

    例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...

  7. nyoj 284 坦克大战 简单搜索

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...

  8. nyoj 170 网络的可靠性

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=170 思路:统计每个节点的度,将度为1的节点消去所需要的最少的边即为答案. 代码: #in ...

  9. nyoj 139 我排第几个--康拓展开

    我排第几个 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说 ...

随机推荐

  1. DES加密中文乱码问题的解决

    服务器向客户端返回时: response.setContentType("text/json; charset=utf-8"); 客户端解码时: return new String ...

  2. os模块汇总

    os.name 输出字符串指示正在使用的平台.如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'. os.getcwd() 函数得到当前Python脚本工作的目录路 ...

  3. tomcat之一:指定tomcat运行时JDK版本

    tomcat作为日常开发的web应用服务器,给开发测试带来了很多便利,tomcat的运行依赖JDK的支持,在安装JDK时经常会配置环境变量:JAVA_HOME.CLASSPAT,且需要添加path变量 ...

  4. git下载指定版本的代码

    1. git fetch https://github.com/angular/angular.js.git v1.5.8 或 2. git pull https://github.com/angul ...

  5. [转]IPython Notebook简介1

    原文:http://hyry.dip.jp/tech/slice/slice.html/35 Python Notebook简介1 作者 : RY    标签: cython ipython-note ...

  6. 转载文档:Storm实战常见问题及解决方案

    该文档为实实在在的原创文档,转载请注明: http://blog.sina.com.cn/s/blog_8c243ea30101k0k1.html 类型 详细 备注 该文档是群里几个朋友在storm实 ...

  7. 基于Flume+LOG4J+Kafka的日志采集架构方案

    本文将会介绍如何使用 Flume.log4j.Kafka进行规范的日志采集. Flume 基本概念 Flume是一个完善.强大的日志采集工具,关于它的配置,在网上有很多现成的例子和资料,这里仅做简单说 ...

  8. git review & devops过程

    自己搭建的devops环境是gitlab/gerrit/jenkins 1. 首先自己checkout一个自己的代码分支,一般不要在master上做直接修改 2. 修改后git add file,   ...

  9. Nginx搭建反向代理服务器过程详解

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  10. Sql--order by、desc降序、top

    ---------通过order by 语句进行排序: --1.降序order by 列名desc --2.升序order by 列名   或order by 列名asc --3.order by语句 ...