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

分类: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咨询

相关毕业设计

  • 旅行社管理信息系统

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

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

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

    2017/2/10 14:32:51
  • 基于IC卡刷卡器的学生考勤管理系统

    基本信息设置管理员权限、系统日志、系统备份、科目管理、课程表管理、学期管理、考勤事由管理、考勤时间管理、科室管理&emsp;班级管理班级建立及学生升迁&emsp;学生IC卡管理学生信息归档、归所属班级、同步原管理系统中的IC卡信息,IC卡管理当无障碍通道管理系统中学…

    2017/2/9 14:30:48
  • 投融资机构动态管理系统的设计与实现

    近年来,国家为解决中小微企业融资难和促进民间投资活动,进一步取消和放宽对民间投资、融资活动的政策限制,各类投资担保公司、投资管理公司、投资咨询服务公司大量涌现。这些中介公司在一定程度上缓解了中小企业融资难问题,但由于这类公司设立门槛低,缺乏监管以及违规操作…

    2017/1/25 16:32:20

客户对我们的评价