c++ - 如何将数字的每个数字向右排列一步?

标签 c++ primes

如何创建所有可能的数字,从给定的数字开始,新数字的所有数字都向右移动一个槽位?例如,如果我们有 1234。我想生成 4123、3412 和 2341。

到目前为止我得出的结论是:

int move_digits(int a)
{
    int aux = 0;
    aux = a % 10;

    for(int i=pow(10, (number_digits(a) - 1)); i>0; i=i/10)
        aux = aux * 10 + ((a % i) / (i/10));
    return aux;
}

但它不起作用。

子程序 number_digits 看起来像这样(它只计算给定数字的位数):

int number_digits(int a)
{
    int ct = 0;
    while(a != 0)
    {
        a = a/10;
        ct++;
    }
    return ct;
}

最佳答案

我认为没有必要单独编写函数 number_digits。 我会把函数 move_digits 写得更简单

#include <iostream>
#include <cmath>

int move_digits( int x )
{
    int y = x;
    double n = 0.0;

    while ( y /= 10 ) ++n;   
    return ( x / 10 + x % 10 * std::pow( 10.0, n ) );
}

int main()
{
    int x = 1234;

    std::cout << x << std::endl;
    std::cout << move_digits( x ) << std::endl;
}

关于c++ - 如何将数字的每个数字向右排列一步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21955361/

相关文章:

python - 快速确定 Python 中小于 10 亿的数字是否为质数

调用一个线程并调用新程序 primeThreads.c

haskell - 欧拉项目 10 - [haskell] 为什么这么低效?

c++ - 为 C++ Variant 类在 string、int、double 之间灵活转换

java - 为什么我的程序找不到第 10001 个素数? [项目欧拉问题7]

c++ - Sieve of Sundaram 和 Sieve of Atkin 生成素数列表的比较

c++ - 是否可以在 Qt 应用程序中使用 Win32 Hooks

C++11 lambda 和参数包

模板类上的 C++ 模板复制构造函数

c++ - boost::filesystem::path(std::wstring) 抛出异常