zoukankan      html  css  js  c++  java
  • poj 2551 Ones

    本题的想法很简单,就是模拟手算乘法。不一样的是,需要控制输出的结果:每一位都是由1构成的整数。

    代码如下:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int a[][4] ={{1,7,3,9},{1,1,1,1},{9,3,7,1},{8,6,4,2},{7,9,1,3},{6,2,8,4},{5,5,5,5},{4,8,2,6},{3,1,9,7},{2,4,6,8}};
     5 
     6 int get(int n)
     7 {
     8      int k = 0,mm,t;
     9      if(n%10 == 1) t = 0;
    10      if(n%10 == 3) t = 1;
    11      if(n%10 == 7) t = 2;
    12      if(n%10 == 9) t = 3;
    13      
    14      int nm = n*a[nm%10][t];
    15      
    16      while(nm!=0)
    17      {
    18          mm = nm%10;
    19          if(mm == 1) { nm = nm/10; k ++;}
    20          else nm = nm + n*a[mm][t];                  
    21      }
    22      return k;
    23 }
    24 
    25 int main()
    26 { 
    27     int n;
    28     while(cin>>n)
    29       cout<<get(n)<<endl;
    30     return 0;
    31 }

    注意二维数组的构造方式:  使得每一次第20行代码执行之后的所得到的数的末位是1。数组中的第一维是上一次nm对10的余数,第二维与所输入的数的末位对应。

    另外注意,数组a是可以改变的,也就是说,如果遇到有其他的要求的时候,数组a可以根据要求来改变。

  • 相关阅读:
    精准测试
    git 管理
    git
    代码覆盖率测试
    vue 前端视频
    jenkins
    go学习资料
    4-4 求自定类型元素的平均
    4-3 简单求和
    4-2 多项式求值
  • 原文地址:https://www.cnblogs.com/castlehappiness/p/4479727.html
Copyright © 2011-2022 走看看