Algorithm 向左旋转
我有一个整数。 假设n=25314; 我想将整数(n)左侧的数字旋转n次。Algorithm 向左旋转,algorithm,integer,Algorithm,Integer,我有一个整数。 假设n=25314; 我想将整数(n)左侧的数字旋转n次。 对于例如int=25314和3次向左旋转,结果是int=14253 int=32546,向左旋转4次。所以,结果是int=63254 如何在C++中用n次旋转整数左? ,可以将整数转换为字符串。从字符串的开头到n执行一个子字符串,从n+1执行一个子字符串到字符串的结尾。首先将右块和第二个左块连接在一起。然后将字符串转换回整数。您可以将整数转换成字符串。从字符串的开头到n执行一个子字符串,从n+1执行一个子字符串到字符串的
对于例如int=25314和3次向左旋转,结果是int=14253
int=32546,向左旋转4次。所以,结果是int=63254
如何在C++中用n次旋转整数左? ,可以将整数转换为字符串。从字符串的开头到n执行一个子字符串,从n+1执行一个子字符串到字符串的结尾。首先将右块和第二个左块连接在一起。然后将字符串转换回整数。您可以将整数转换成字符串。从字符串的开头到n执行一个子字符串,从n+1执行一个子字符串到字符串的结尾。首先将右块和第二个左块连接在一起。然后将字符串转换回整数。1234567/1000=1234,余数为567。 然后按相反的顺序把它们放回一起。 你需要计算x,它是比d高10的幂。 (这就是循环。)
int n=1234567;
int p=(int)pow(10,3);//如果你想旋转3位数
int d=n/p;//=1234
int r=n-d*p;//=567
int x=1;
而(x1234567/1000=1234,剩余567。
然后按相反的顺序把它们放回一起。
你需要计算x,它是比d高10的幂。
(这就是循环。)
int n=1234567;
int p=(int)pow(10,3);//如果要旋转3位数
int d=n/p;//=1234
int r=n-d*p;//=567
int x=1;
(x对于一个N位数的整数,你想把它向左旋转M次,最简单的方法是做一个模运算M%N,这将给你每个位数的最后移位
例如,在您的问题中,您希望将32546向左旋转4位,4%5是4,因此每个数字需要向左旋转4位
编号:32546,数字:5,旋转计数:4,每个数字的移位:4%5=4
number: original position final position
3 4 (4+4)%5 = 3
2 3 (3+4)%5 = 2
5 2 (2+4)%5 = 1
4 1 (1+4)%5 = 0
6 0 (0+4)%5 = 4
因此,最终结果是:63254
对于非常大的整数,您可以将整数转换为字符串,进行旋转并重新更改。但是,对于这种情况,您可以这样做:
int result = 32645;
for(int i=0; i<4; ++i)
result *= 10; // this is to rotate left 4 digits
int right = 32546;
for(int i=0; i<5-4; ++i)
right /= 10; // get the number to be appended to the right;
result += right;
result %= 100000; // get the final 5 digit result;
int结果=32645;
对于(int i=0;i的N位整数,如果要将其向左旋转M次,最简单的方法是执行模块化操作M%N,这将给出每个数字的最终移位
例如,在您的问题中,您希望将32546向左旋转4位,4%5是4,因此每个数字需要向左旋转4位
编号:32546,数字:5,旋转计数:4,每个数字的移位:4%5=4
number: original position final position
3 4 (4+4)%5 = 3
2 3 (3+4)%5 = 2
5 2 (2+4)%5 = 1
4 1 (1+4)%5 = 0
6 0 (0+4)%5 = 4
因此,最终结果是:63254
对于非常大的整数,您可以将整数转换为字符串,进行旋转并重新更改。但是,对于这种情况,您可以这样做:
int result = 32645;
for(int i=0; i<4; ++i)
result *= 10; // this is to rotate left 4 digits
int right = 32546;
for(int i=0; i<5-4; ++i)
right /= 10; // get the number to be appended to the right;
result += right;
result %= 100000; // get the final 5 digit result;
int结果=32645;
对于(int i=0;还有执行子块步骤的std::rotate
算法:还有执行子块步骤的std::rotate
算法:@Moo:i应该是werkin'@Moo:i应该是werkin'