A*B Problem 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 设计一个程序求出A*B,然后将其结果每一位相加得到C,如果C的位数大于等于2,继续将C的各位数相加,直到结果是个一位数k。
例如:
6*8=48;
4+8=12;
1+2=3;
输出3即可。
输入 第一行输入一个数N(0
3 6 8 1234567 67 454 1232样例输出
3 4 5余9数定理 如果 a==0 或者b==0 结果是0,那么最终结果必然是0; 让a*b%9=c,则c为最终答案,但是要注意一个特殊情况: 如果c==0,那么最终结果是9而不是0(举个例子:如果225是a*b的值那么其实最终结果是9,但是仅仅对9取余的话 结果就是0了) 以下附上代码
#include<stdio.h> #include <algorithm> #include <iostream> #include <string.h> #include <math.h> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { long long a,b; scanf("%lld%lld",&a,&b); if(a==0||b==0) { printf("0\n"); continue; } else { int c=(a%9)*(b%9)%9; if(c==0) c=9; printf("%d\n",c); } } return 0; }