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           

 

目录
相关文章
|
人工智能 算法
|
API
NYOJ 540
  为了给学弟学妹讲课,我水了一道题…… import java.util.Arrays; import java.util.Scanner; public class NYOJ540 { public static void main(String[] args) { ...
799 0
|
计算机视觉
NYOJ 289
  苹果 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值。
727 0
NYOJ 205
  求余数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数   输入 第一行有一个整数m(1T; 13 scanf("%*c")...
666 0
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...
470 0
|
定位技术
NYOJ 20
  吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。
798 0
|
机器学习/深度学习 人工智能 算法
NYOJ 148
  fibonacci数列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:3   描述 In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2.
829 0
|
网络协议
NYOJ 8
  一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);1.
762 0
|
人工智能
NYOJ 461
  Fibonacci数列(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:4   描述 数学神童小明终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。
700 0
|
测试技术
NYOJ 523
  亡命逃窜 时间限制:1000 ms | 内存限制:65535 KB 难度:4   描述   从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧。不过英雄不是这么好当的。
899 0

热门文章

最新文章