基于关系型数据库实现大整数之除法数值计算技术的研究

分类:ASP.NET(网页)     次浏览

马上定制: 淘宝旺旺咨询 QQ咨询

    基于关系型数据库实现大整数除法数值计算技术的研究

    要求学生利用所学理论技术知识,独立设计一种能实现智能的、拓扑特征数据的、叉树结构链式存储技术的方法。

    /**  大数除法与求余  **/
    这个题大意为输入两个数和一个符号( '/'  or ''% ),求除法或是求余(其中除数是n满足 0<n<231),例:
    输入为:
    110 / 100
    99 % 10
    输出为:
    1
    9
    ***/
    代码如下:

    #include<iostream>

    #include<cstdio>

    #include<cstring>

    using namespace std;

    char s[1000],result[1000];

    int main()

    {

        long long mod,divis;

        int  n,i,k,flag,len;

        char c;

        while(cin>>s>>c>>n)   //输入被除数 s,符号 c ( '/' or ''% ),以及除数n
        {

            len=strlen(s);

            if(c=='%')

            {

                mod=0;

                for(i=0; i<len; i++)

                {

                    mod=mod*10+s[i]-'0';         

                    mod=mod%n;                      //利用除法性质,其实质是每次都是一个最多比n多一位的mod对n进行求余
                }

                cout<<mod<<endl;

            }

            else

            {

                divis=flag=0;

                for(i=k=0; i<len; i++)             

                {

                    divis=divis*10+s[i]-'0';

                    if(divis>=n&&!flag)                //利用除法性质,当divs大于除数n时,开始进行整除
                    {

                        result[k++]=divis/n+'0';

                        divis=divis%n;                  //除法性质,余数*10加下一位的数字便是新的被除数
                        flag=1;

                    }

                    else if(flag)

                    {

                        result[k++]=divis/n+'0';

                        divis=divis%n;

                    }

                }

                if(!k) result[k++]='0';

                result[k]='\0';

                cout<<result<<endl;

            }

        }

        return 0;

    }

    /**  大数除法与求余  **/

    大数除法,应该算是四则运算里面最难的一种了。不同于一般的模拟,除法操作步数模仿手工除法,而是利用减法操作实现的。  其基本思想是反复做除法,看从被除数里面最多能减去多少个除数,商就是多少。 

    逐个减显然太慢,要判断一次最多能减少多少个整的10的n次方。 

    以7546除23为例。 

    先减去23的100倍,就是2300,可以减3次,余下646。  

    此时商就是300; 

    然后646减去23的10倍,就是230,可以减2次,余下186。此时商就是320;  然后186减去23,可以减8次,此时商就是328.    

    根据这个思想,不难写出下面的代码。  还是那句话,可能算法效率不是很高。但是常规解题思路一般就是这样了。


马上定做毕业设计


马上定制: 淘宝旺旺咨询 QQ咨询

相关毕业设计

  • 供应商管理

    随着经济的发展,全球经济一体化,企业经营全球化,以及高度竞争造成的高度个性化与迅速改变的客户需求,令企业在提高产品质量,降低产品成本,快速响应全球市场需求变化方面,面临来自市场层面持续不断的压力。而大多数企业由于相当依赖于对外采购产品与服务,所以其对供应商…

    2017/3/12 12:00:15
  • 酒店管理系统

    随着中国经济的腾飞,人民生活水平的不断进步,旅游已经成为当今人们生活、娱乐、休闲的一个主题。旅游行业的日趋火爆,同时加速了酒店、宾馆行业的整体发展。 酒店行业充满了激烈的市场竞争,在改革开放一来,我国的酒店、宾馆行业迅速发展,成为具有一定规模的第三产业,充满…

    2017/3/11 21:05:25
  • 旅行社管理信息系统

    系统功能应包括: (1) 旅游团队、团队团员及旅游路线相关信息的输入 (2) 旅游团队、团队团员及旅游路线相关信息的维护(修改、浏览、删除和撤销) (3) 旅游团队管理信息的查询(如按团队编号) (4) 团队团员基本情况的查询(可选多种方式) (5) 旅游路线相关信息的查询(如按线…

    2017/2/11 11:40:09
  • 学生考勤系统

    1. 利用 无障碍通道管理系统 中已建好IC卡学生\教师卡信息,通过读取IC卡上的学生和教师信息进行开发 学生考勤系统。2. 网站版本(1)基本信息设置 管理员权限、系统日志、系统备份、科目管理、课程表管理、其它管理、考勤事由管理、考勤时间管理、科室管理【1】科目管理 建立…

    2017/2/10 14:32:51

客户对我们的评价