前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++编程之美-数字之魅(代码清单2-17)

C++编程之美-数字之魅(代码清单2-17)

作者头像
cwl_java
发布2022-11-30 08:48:15
1780
发布2022-11-30 08:48:15
举报
文章被收录于专栏:cwl_Java

代码清单2-17

代码语言:javascript
复制
// 初始化
     for(i = 0; i < N; i++)
          BigInt[i].clear();
     BigInt[1].push_back(0);

     int NoUpdate = 0; 
     for(i=1,j=10%N; ; i++,j=(j*10)%N)
     {
          bool flag = false;
          if(BigInt[j].size() == 0)
          {
               flag = true;
               // BigInt[j] = 10^i, (10^i % N = j)
               BigInt[j].clear();
               BigInt[j].push_back(i);
          }
          for(k = 1; k < N; k++)
          {
               if((BigInt[k].size() > 0)
                    && (i > BigInt[k][BigInt[k].size() - 1]) 
                    && (BigInt[(k + j) % N].size() == 0))
               {
                    // BigInt[(k + j) % N] = 10^i + BigInt[k]
                    flag = true;
                    BigInt[(k + j) % N] = BigInt[k];
                    BigInt[(k + j) % N].push_back(i);
               }
          }
          if(flag == false) NoUpdate++;
          else NoUpdate=0;
          // 如果经过一个循环节都没能对BigInt进行更新,就是无解,跳出。
          // 或者BigInt[0] != NULL,已经找到解,也跳出。
          if(NoUpdate == N || BigInt[0].size() > 0)
               break;
     }
     if(BigInt[0].size() == 0)
     {
          // M not exist
     }
     else
     {
          // Find N * M = BigInt[0]
     } 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码清单2-17
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档