题目描述 Description
除法是计算中的基础运算,虽然规则简单,但是位数太多了,也难免会出错。现在的问题是:给定任意位数(足够大就可以啦O(∩_∩)O)的一个被除数,再给定一个long long类型的除数,求它的余数,并保留小数点后s位。
 输入输出格式 Input/output
输入格式:
三行:
第一行:被除数
第二行:除数
第三行:一个数s,表示保留小数点后s位
输出格式:
第一行:表示计算的结果(不可以有前导0,保留小数点后s位)
第二行:余数
 输入输出样例 Sample input/output
样例测试点#1
输入样例#1:
123456789
123
30
输出样例#1:
1003713.731707317073170731707317073170
90
样例测试点#2
输入样例#2:

2456465461515648654411465465465413231256456445621
15
30

输出样例#2:

163764364101043243627431031031027548750430429708.066666666666666666666666666666
1

思路:这题的数据量很大,大数据类型的,如果直接计算是不可取的,必须用高精度算法。
这里可以分为几个函数来计算:
①高精度除以单精度法函数:专题里面会细细地讲的
倒序输出函数:专题里面会细细地讲的
③手算模拟了一下除法的过程,余数*10再除以除数,就得了第一位小数点后的数,保存到k里面,输出再把余数赋值为余数-除数*K(想不通的,可以手动模拟一下过程,其实很简单的)然后一位一位输出即可
代码如下:
 #include <stdio.h>
#include <string.h>
#define MaxLength 99999
int x,q;//q是备份余数用的
void output(int c[])//倒序输出函数
{
int i;
for(i=c[];i>=;i--)
printf("%d",c[i]);
}
/*============================================================================*/
void div(char strA[],int b,int c[])//高精度数a除以整数b,结果保存在c。
{
int a[MaxLength],i,lena,lenc,j,t;
memset(a,,sizeof(a));
memset(c,,sizeof(c));
if(b==)
{
c[]=;
c[]=;
return ;
}
lena=strlen(strA);
for(i=;i<lena;i++) //把串strA正序存储到数组a
a[i+]=strA[i]-'';
x=;
for(i=;i<=lena;i++) //按位相除
{
c[i]=(x*+a[i])/b;
x=(x*+a[i])%b;
}
lenc=;
while(c[lenc]==&&lenc<lena) //高位可能会有一些无意义的0,需要把lenc定好位
lenc++;
c[]=lena-lenc+;
for(j=;j<=c[];j++) //把数组c整体左移,也就是把前缀0给覆盖掉
{
c[j]=c[lenc];
lenc++;
}
for(i=,j=c[];i<j;i++,j--)
{
t=c[i];c[i]=c[j];c[j]=t;
}
q=x;//备份一下余数
output(c);//传入输出函数
}
/*============================================================================*/
int main()
{
char a[MaxLength];
int b[MaxLength];
int i,k;
long long s,n;
gets(a);
scanf("%I64d",&n);
scanf("%d",&s);
div(a,n,b);
printf(".");
for(i=;i<s;i++)//小数点后s位
{
x=x*;
k=x/n;
printf("%d",k);
x=x-n*k;
}
printf("\n%d\n",q);
return ;
}

大数据除法(Large data division)的更多相关文章

  1. 大数据去重(data deduplication)方案

    数据去重(data deduplication)是大数据领域司空见惯的问题了.除了统计UV等传统用法之外,去重的意义更在于消除不可靠数据源产生的脏数据--即重复上报数据或重复投递数据的影响,使计算产生 ...

  2. 学习笔记之大数据(Big Data)

    300 秒带你吃透大数据! https://mp.weixin.qq.com/s/VWaqRig6_JBNYC1NX7NQ-Q 手把手教你入门Hadoop(附代码&资源) https://mp ...

  3. C语言实现大数据除法

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格 ...

  4. hadoop(一)之初识大数据与Hadoop

    前言 从今天起,我将一步一步的分享大数据相关的知识,其实很多程序员感觉大数据很难学,其实并不是你想象的这样,只要自己想学,还有什么难得呢? 学习Hadoop有一个8020原则,80%都是在不断的配置配 ...

  5. Hadoop基础之初识大数据与Hadoop

    前言 从今天起,我将一步一步的分享大数据相关的知识,其实很多程序员感觉大数据很难学,其实并不是你想象的这样,只要自己想学,还有什么难得呢? 学习Hadoop有一个8020原则,80%都是在不断的配置配 ...

  6. 一表格简单明了区分BI和大数据

    大数据和BI两词现阶段处于刷屏状况,但是,很多人对于这两词确傻傻分不清.改怎么区别呢?本文将从概念.应用.发展趋势等多个角度对大数据和BI进行区分. BI(Business Intelligence) ...

  7. 大数据 Hadoop,Spark和Storm

    大数据(Big Data)   大数据,官方定义是指那些数据量特别大.数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理.大数据的主要特点为数据量大(Volume),数据类别复 ...

  8. Hadoop生态圈-大数据生态体系快速入门篇

    Hadoop生态圈-大数据生态体系快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.大数据概念 1>.什么是大数据 大数据(big data):是指无法在一定时间 ...

  9. Spark记录-大数据简介

    什么是大数据 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信 ...

随机推荐

  1. angular2+webpack的搭建过程遇到的问题记录

    最近在由于公司的项目要重构,Superiors要求将原先的Ionic1+angular1+gulp用全新的Ionic2+angular2+webpack重构.苦逼的Google了好久,环境搭建还是不太 ...

  2. Linux的一些简单命令(二)

    1.查看防火墙状态:service iptables status 2.开启防火墙:service iptables start 3.关闭防火墙:service iptables stop 4.创建目 ...

  3. URL中的#

    作者:阮一峰   http://www.ruanyifeng.com/blog/2011/03/url_hash.html 一.#的涵义 #代表网页中的一个位置.其右面的字符,就是该位置的标识符.比如 ...

  4. ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

    Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^   工具/原料 Visual Studio 2010  ( ...

  5. Struts2的通配符配置方式

    Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类: 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中 ...

  6. sharepoint代码添加WebPart

    Adding a web part   Following code snippet can be used to add a web part in an existing SharePoint w ...

  7. javascript实现验证身份证号的有效性并提示

    javascript实现验证身份证号的有效性并提示 function nunber(allowancePersonValue){ if(allowancePersonValue=="身份证号 ...

  8. SSH整合例子

    三大框架: Struts框架 1. params拦截器: 请求数据封装 2. 类型转换/数据处理 3. struts配置 4. 文件上传/下载/国际化处理 5. 数据效验/拦截器 6. Ognl表达式 ...

  9. C++中int转为char 以及int 转为string和string 转int和空格分隔字符串

    1.对于int 转为char 直接上代码: 正确做法: void toChar(int b) { char u; ]; _itoa( b, buffer, ); //正确解法一 u = buffer[ ...

  10. Golang--计算文件的MD5值

    参考: http://blog.csdn.net/u014029783/article/details/53762363 用法: $ go run 01.go -f 1.txt b9d228f114d ...