计算C ++中被4整除的旋转

我们得到了很多。目的是计算可被4整除的num的旋转。

由于旋转不能一次又一次地完成。我们将使用被4整除的属性。如果最后两位数字可被4整除,则数字可被4整除。如果数字是1234,则其旋转将是1234、4123、3412、2341,其中3412可被4整除,因为最后两位数字12是被4整除

让我们通过示例来理解。

输入-num = 15324

输出-可以被4整除的旋转计数是:2

说明-旋转是-

15324, 41532, 24153, 32415, 53241

其中15324和41532可被4整除。

输入-num = 848484

输出-可以被4整除的旋转计数是-6

说明-旋转是-

848484, 484848, 848484, 484848, 848484, 484848

所有这些旋转都可以除以4

以下程序中使用的方法如下

我们将数字转换为字符串,并使用for循环遍历数字。对于每对两位数,将它们转换为整数,并用4检验除数。如果可整,则增加计数。

  • 将数字取为long long num。

  • Rotation_4(long long num)函数采用数字num并返回num的可被4整除的旋转计数。

  • 将num转换为字符串str = to_string(num)。

  • num中的位数将是length = str.length()。

  • 取临时变量digit = 0来存储数字对的整数值。

  • 将初始计数设为0。

  • 如果length为1,则仅存在一个数字。将其转换为整数,digit =(str.at-'0')

  • 检查除数是否为4,并将结果返回为1或0。

  • 现在使用for循环遍历str从i = 0到I <length-1。

  • 使用digit =(str.at(i)-'0')* 10 +(str.at(i + 1)-'0')来制作两位数,因为每对将成为旋转的最后两位数。

  • 使用digit =(str.at(length-1)-'0')* 10 +(str.at-'0')对由最后一位和第一位组成的对执行与上述相同的过程 用4检查除数并更新计数。

  • 最后返回结果。

示例

#include <bits/stdc++.h>
using namespace std;
int Rotation_4(long long num){
   string str = to_string(num);
   int length = str.length();
   int digit = 0, count = 0;
   if (length == 1){
      digit=(str.at(0)-'0');
      if(digit%4 == 0){
         return 1;
      }
      else{
         return 0;
      }
   }
   for (int i=0; i<(length-1); i++){
      digit = (str.at(i)-'0')*10 + (str.at(i+1)-'0');
      if(digit%4 == 0){
         count++;
      }
   }
   digit = (str.at(length-1)-'0')*10 + (str.at(0)-'0');
   if(digit%4 == 0){
      count++;
   }
   return count;
}
int main(){
   long long num = 24040;
   cout<<"Count of rotations divisible by 4 are: "<<Rotation_4(num);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of rotations divisible by 4 are: 4