zoukankan      html  css  js  c++  java
  • 模拟竖式除法

    Description

    设有下列的算式:
                         8 0 9
                -----------
    口口)   口口口口
                  口口
          -----------
                    口口口
                   口口口
          -----------
                    1
    求出□中的数字,并打印出完整的算式来。
    Input
    无输入
    Output
    输出共五行,每行对应图中算式从上到下从左到右的一个数。
    Sample Input 1
    Sample Output 1
     
    具体来说:
    输出的第一行对应图中算式中左上角的那个未知的两位数;
    输出的第二行对应图中的那个未知的四位数;
    输出的第三行对应图中的另外一个未知的两位数;
    输出的第四行对应图中的位置靠上的那个未知的三位数;
    输出的第五行对应图中的位置靠下的那个未知的三位数。

    大概长这个样子
    11
    1111
    11
    111
    111
     
     
    解析:这实际上就是小学刚学除法时,学习的竖式除法,我们只需要模拟一遍即可
    思路:1)观察被除数有四位数代码中的a[count1],除数有两位数,即代码中的b[count1],所以我们只需用两个for循环枚举一遍即可;
    2)模拟竖式除法:
    (1)除数×8得到第一虚线和第二虚线的数 ,即下面代码中的b【count1】*8且它满足两位数,即小于100;
    (2)取出a中的千位和百位,只需a[count1]/100 设为tmp1即可,再减去b[count1]*8得到第二虚线和第三虚线中的第一行的第一个数,接着凑出第一行的数,即(a/100-b[count1]*8)*100    +  a[count1]-tmp1*100;),
    (3)最后一行继续模拟即可,假设    tmp2 = a[count1]-tmp1*100;   则利用最后的那个余数1 ,得到((tmp2+(tmp1-b[count1]*8)*100)-b[count1]*9==1);
    (4)最后记得最后两行都满足大于100即可;
     
    总之就是模拟一遍即可!
    代码如下:
    #include<iostream>
    using namespace std;
    
    int a[100000];
    int b[100000];
    int tmp1 = 0,tmp2 = 0;
    int count1 = 0;
    int main()
    {
        for(int i = 1000;i <= 9999 ;i++)
        {
            for(int j = 10 ;j <= 99;j++)
            {
                if((i/j==809)&&(i%j==1))
                {
                    a[count1] = i;
                    b[count1] = j;
                    tmp1 = a[count1]/100;
                    tmp2 = a[count1]-tmp1*100;
                    if(b[count1]*8<100&&(tmp1-b[count1]*8<10)&&((tmp2+(tmp1-b[count1]*8)*100)-b[count1]*9==1)&&(tmp2+(tmp1-b[count1]*8)*100)>100&&(b[count1]*9)>100)
                    {
                        cout<<b[count1]<<endl;
                        cout<<a[count1]<<endl;
                        cout<<b[count1]*8<<endl;
                        cout<<tmp2+(tmp1-b[count1]*8)*100<<endl;
                        cout<<b[count1]*9<<endl;
                        
                    }
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    DinnerNow中的Work Flow应用(上) 订单流程
    在Silverlight 2 (Beta2) 中使用webclient上传图片
    初尝dinnernow
    在silverlight 2 (beta1) 中使用BackgroundWorker
    徒劳的尝试 动态修改LINQ TO SQL的表名称
    你是否积极主动(Proactivity)?
    动态加载Silverlight应用的dll文件(可实现插件功能)
    silverlight与javascript交互操作
    DinnerNow中的Work Flow应用(下) 订单流程
    C#中winform窗体常用设置
  • 原文地址:https://www.cnblogs.com/yewanting/p/10533610.html
Copyright © 2011-2022 走看看