棄九法
描述設計一個程序求出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的情況。
- “棄九法”也叫做棄九驗算法。兩個因數的九餘數相乘,所得的數的九餘數應當等於兩個因數的乘積的九餘數。
- 下面是C語言代碼:
#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;
}