• NYOJ 485


    题目:

    A*B Problem
    
    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
    设计一个程序求出A*B,然后将其结果每一位相加得到C,如果C的位数大于等于2,继续将C的各位数相加,直到结果是个一位数k。
    
    例如:
    
    6*8=484+8=121+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
    View Code

    自己的代码:超时

     1 #include <iostream>
     2 #include <string.h>
     3 using namespace std;
     4 
     5 char a[15],b[15];
     6 int results[30],len_results=0;
     7 
     8 int* Mulit(char *a,char *b)
     9 {
    10     int len_a=strlen(a);
    11     int len_b=strlen(b);
    12     int begin_pos=0,i;
    13     memset(results,0,30*sizeof(int));
    14     for(i=0;i<len_a;i++)
    15     {
    16         for(int k=0;k<len_b;k++)
    17         {
    18             results[begin_pos+k]+=(a[i]-48)*(b[k]-48);
    19         }
    20         begin_pos++;
    21     }
    22     len_results=begin_pos+len_b-1;
    23     return results;
    24 }
    25 
    26 int main()
    27 {
    28     int n;
    29     cin>>n;
    30     while (n--)
    31     {
    32         cin>>a>>b;
    33         Mulit(a,b);
    34         int sum=0,k=0;
    35         for(int i=0;i<len_results;i++)
    36         {
    37             sum+=results[i];
    38         }
    39         if(sum<10)
    40             cout<<sum<<endl;
    41         else if(sum%9==0)
    42             cout<<9<<endl;
    43         else
    44             cout<<sum%9<<endl;
    45     }
    46     return 0;
    47 }
    View Code

    自我感觉我这代码算是比较简洁的了,难道是思路上还有要改进的地方???再仔细想想

  • 相关阅读:
    KM算法(带权二分图最优匹配)
    I'm Telling the Truth(二分图最大匹配) HDU
    过山车(二分图匹配裸题) HDU
    locker(dp) HDU
    Hunters(期望,数学) HDU
    Sum of divisors(进制转换) HDU
    DataTable 内数据搜索
    NPOI 读取xls,xlsx文件
    (转)C#将多个DLL集成到EXE文件中的方法
    saveFileDialog简单使用
  • 原文地址:https://www.cnblogs.com/ouweiqideblog/p/3274244.html
Copyright © 2020-2023  润新知