计算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检验除数。如果可整,则增加计数。
将数字取为longlongnum。
Rotation_4(longlongnum)函数采用数字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