zoukankan      html  css  js  c++  java
  • 整数移位为原数的3倍+2

    题:三位数的整数,将首位移至末位形成的数是原数的3倍加2,求原数。
    三位十进制整数的表示(首位为y,后续为x):100y+x(0<=x<=99),转换后的三位数:10x+y,于是得到10x+y=3(100y+x)+2,化简:7x-2=299y,其中:1<=y<=9。计算机穷举:y=1或8,由x的约束条件,取y=1,则x=43,原数为143,移位后431.

    传统的代数解法主要在于十进制整数的表示方法。

    另一种,参照数组移位的方法直接穷举,将程序进行优化:由于三位数的限制,对首位优化:1<=y<=3。第二位优化,由于是原数3倍+2,而y>=1,所以第二位必定>=3。约束后的情形:
    1 3 x ...
    2 3 x...
    3 3 x...
    可能还可以进一步优化,暂时放在这。这段代码穷举三位数范围的解,4,5,6....位依此类推。

    #include <iostream>
    using namespace std;
    int main()
    {
        int a[3];
        for(int i=1;i<=3;i++)/*百位*/
        {
            a[0]=i;
            for(int j=3;j<=9;j++)/*十位*/
            {
                a[1]=j;
                for(int k=0;k<=9;k++)/*个位*/
                {
                    a[2]=k;
                    if(((a[0]*100+a[1]*10+a[2])*3+2)==(100*a[1]+10*a[2]+a[0]))
                    {
                        for(int v=0;v<3;v++)
                        cout<<a[v]<<" ";
                    }
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    Java笔记
    多态
    JavaScript this
    JavaScript 对象的遍历以及判断方法
    javaScript 对象访问属性的另一种方式
    JavaScript 实现jquery方法连续调用效果
    JavaScript 命名空间
    JavaScript 继承
    python django 配置文件和url参数配置
    c# 6.0 新增功能
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5314280.html
Copyright © 2011-2022 走看看