NYOJ 485

简介:   A*B Problem 时间限制:1000 ms | 内存限制:65535 KB 难度:2   描述 设计一个程序求出A*B,然后将其结果每一位相加得到C,如果C的位数大于等于2,继续将C的各位数相加,直到结果是个一位数k。

 

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



 1 #include <stdio.h>
 2 int main()
 3 {
 4      int i,j,k,T;
 5      scanf("%d",&T);
 6      long long a,b;
 7      while(T--)
 8      {
 9           scanf("%lld%lld",&a,&b);
10           if(0 == a || 0 == b)
11           {
12                printf("0\n");
13                continue;
14           }
15           int temp = (int)((a%9LL)*(b%9LL)%9LL);
16           if(0 == temp)
17                printf("9\n");
18           else
19                printf("%d\n",temp);
20      }
21      return 0;
22 }
23           
 1 //说实话刚开始看到(0<=m,n<=10^12)没想起long long但后来一想10^12 * 10^12就超 long long 啦,但一看报告才想起乘法求余定理就可 
 2 #include <iostream>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8      int i,j,k,T;
 9      cin>>T;
10      long long a,b;
11      while(T--)
12      {
13           cin>>a>>b;//sacnf("%lld",&a)
14           int temp = (a%9LL)*(b%9LL)%9;
15           if(0 == temp)
16                cout<<9<<endl;
17           else
18                cout<<temp<<endl;
19      }
20      return 0;
21 }
22  //继续超时 ,但我感觉应该判为wa,因为其中之一为0就需输出0而不是9                  
23                     
24           
 1 /*
 2 一个数对九取余后的结果称为九余数。
 3 一个数的各位数字之和想加后得到的<10的数字称为这个数的九余数(如果相加结果大于9,则继续各位相加)
 4 */ 
 5 #include <iostream>
 6 #include <cstring>
 7 using namespace std;
 8 
 9 int main()
10 {
11      int i,j,k,T;
12      cin>>T;
13      int str[15];
14      while(T--)
15      {
16           char str1[15] = {'\0'},str2[15] = {'\0'};
17           memset(str,0,sizeof(str));
18           cin>>str1>>str2;
19           int len1 = strlen(str1);
20           int len2 = strlen(str2);
21           for(i=0; i<len1; i++)
22                for(j=0; j<len2; j++)
23                {
24                     str[i+j] += (str1[i] - '0')*(str2[j] - '0');
25                }
26           int len = sizeof(str)/sizeof(int);
27           int ans = 0;
28           for(i=0; i<len; i++)
29                ans += str[i];
30           int temp = ans%9;
31           if(0 == temp)
32                cout<<9<<endl;
33           else
34                cout<<temp<<endl;
35          
36      }
37      return 0;
38 }
39  //超时                   
40                     
41           
 1 //今天发现dev的一个功能,按住ctrl + shift,鼠标指向某个变量或者字符串(鼠标为手形),点击,那么鼠标就会调至定义处 
 2 #include <iostream>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8      int i,j,k,T;
 9      cin>>T;
10      int str[15];
11      while(T--)
12      {
13           //memset(str1,0,sizeof(str1));
14           //memset(str2,0,sizeof(str2));
15           char str1[15] = {'\0'},str2[15] = {'\0'};
16           memset(str,0,sizeof(str));
17           cin>>str1>>str2;
18           int len1 = strlen(str1);
19           int len2 = strlen(str2);
20           for(i=0; i<len1; i++)
21                for(j=0; j<len2; j++)
22                {
23                     str[i+j] += (str1[i] - '0')*(str2[j] - '0');
24                }
25           int len = sizeof(str)/sizeof(int);
26           int ans = 0;
27           for(i=0; i<len; i++)
28                ans += str[i];
29           int temp = 0;
30           while(ans > 0)
31           {
32                temp += ans%10;
33                ans /= 10;
34                if(temp>10 && ans==0)//ans == 0必加 
35                {
36                     ans = temp;
37                     temp = 0;
38                }
39           }
40           cout<<temp<<endl;
41           //memset(str,0,sizeof(str));
42      }
43      return 0;
44 }
45  //继续超时                   
46                     
47           

 

目录
相关文章
|
人工智能 算法
NYOJ 283
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 /* 9 bool cmp(char *a,char *b) 10...
473 0
|
定位技术
NYOJ 20
  吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。
804 0
|
人工智能
NYOJ 138
  找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5   描述 在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(00) pos=(pos+1)%N; ch[pos]=num; } ...
794 0
|
机器学习/深度学习
NYOJ 96
  n-1位数 时间限制:3000 ms | 内存限制:65535 KB 难度:1   描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。
501 0
|
测试技术
NYOJ 523
  亡命逃窜 时间限制:1000 ms | 内存限制:65535 KB 难度:4   描述   从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧。不过英雄不是这么好当的。
903 0
|
测试技术
NYOJ 202
  红黑树 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。 当然,这个是我说的。
804 0
|
人工智能
NYOJ 55
  懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
934 0
NYOJ 19
  擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。
740 0