请问这题为什么判断条件是n%10==2 - 爱问答

(爱问答)

请问这题为什么判断条件是n%10==2

题目:

请统计某个给定范围 [L, R][L,R] 的所有整数中,数字 22 出现的次数。

比如给定范围 [2, 22][2,22] ,数字 22 在数 22 中出现了 11 次,在数 1212 中出现 11 次,在数 2020 中出现 11 次,在数 21 中出现 11 次,在数 2222 中出现 22 次,所以数字 22 在该范围内一共出现了 66 次。

输入:两个整数LR  输出:出现次数

代码如下

#include<iostream>

using namespace std

;int main()

{    

              long long a,b,s=0,n;    

                  cin>>a>>b;   

                 for(int y=a;y<=b;y++)
   

{
      

                     n=y;//不能改变循环变量的原值,所以要找“替身”
      

                      while(n!=0)
      

  {            

                          if(n%10==2)

                             s++;
           

                             n/=10;
      

                        }
   

                      }    

       cout<<s;        

       return 0; 

}


如题求解 比如在碰到21的时候 n%10不是不等于2吗?还有n/=10这一步的目的是什么?

本人初学者!

题目应该是问2出现的次数吧

在碰到21的时候,n%10==1而不是2哦;


原理:

语句n%10==2判断一个数的个位是否为2,以202为例,202%10==2,s++;

 接下来判断十位上是否有数字2,原来的个位已判断过就去掉,n/10=20,就把原来个位去掉了,由于20%10!=2,所以知道202十位上没有2;

同理,接下来判断百位数字,得把20的个位也去掉,20/10得2,2%10==2,则202百位上是2,s++。

由此知道202有两个2。更大的数字按以上原理也就得出2的个数了。


如果没有n=y这条语句,假如第一次y=12,y整除10后变成1,但下一次循环y应该等于13,这样y的原值就变了,而用变量n代替就没问题了。


希望你能理解

下一篇:排练计时并且保存了排练时间,在播放时不是自己的排练时间

上一篇:GTA5问题。

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?