zoukankan      html  css  js  c++  java
  • NYOJ 485

     

    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           
  • 相关阅读:
    github的使用
    QPalette的用法
    QTimer的用法
    QStatusBar的用法
    QWhatsThis的用法
    QString::​arg的用法
    qt中ui的 使用介绍
    安全协议IPSEC
    安全协议ssl
    对称加密和非对称加密
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2777222.html
Copyright © 2011-2022 走看看