大数问题

50个最受欢迎的大数据面试问题 50个最受欢迎的大数据面试问题 大数据时代才刚刚开始。随着越来越多的公司倾向于大数据来运营他们的业务,对人才的需求空前高涨。这对您意味着什么?如果您想在任何大数据岗位上工作,它只会转化为更好的机会。您可以选择成为数据分析师,数据科学家,数据库管理员,大数据工程师,Hadoop大数据工程师等。 50个最受欢迎的大数据面试问题 为了使您的事业有优势,您应该为大数据面试做好充分的准备。在开始之前,重要的是要了解面试是一个您和面试官互动的地方,彼此之间只能了解对方,而不能互相了解。因此,您不必隐藏任何东西,只需诚实 阅读详情

相加:

#include<iostream.h>
void main()
{
 int na,nb;
 cout<<"input na:";
 cin>>na;
 cout<<"input nb:";
 cin>>nb;
 int max=(na>nb)?na:nb;
 char *a;
 a=new char[max+1];
 char *b;
 b=new char[max+1];
 if(max==na)
 {
  a[0]='0';
  cout<<"input a:";
  for(int i=1;i<=na;i++)
   cin>>a[i];
  for(int s=0;s<na-nb+1;s++)
   b[s]='0';
  cout<<"input b:";
  for(int j=na-nb+1;j<=max;j++)
   cin>>b[j];
 }
 else
 {
  b[0]='0';
  cout<<"input a:";
  for(int s=0;s<nb-na+1;s++)
   a[s]='0';
   for(int j=nb-na+1;j<=max;j++)
   cin>>a[j];
  cout<<"input b:";
  for(int i=1;i<=nb;i++)
   cin>>b[i]; 
 }
 char *c;
 c=new char[max+1];
 for(int h=0;h<=max;h++)
  c[h]='0';
 int flag=0;
 c[max]+=(a[max]-'0')+(b[max]-'0');
 for(int k=max;k>=0;k--)
 {  
  flag=0;
     if (c[k]-'0'>=10)
  {
   flag=1;
     c[k]-=10;
     c[k-1]=(a[k-1]-'0')+(b[k-1]-'0')+flag+'0';
  }
     else
  {
   c[k-1]=(a[k-1]-'0')+(b[k-1]-'0')+'0';
  }
 }
 for(int l=0;l<=max;l++)
 {
  cout<<c[l];

 }
}

http://acm.zju.edu.cn/show_problem.php?pid=1292
大数相加,格式应该是先给出block数,然后每个block以0结尾,求每个block的大数的和.我没有理解错吧?
我的代码是这样的:
#include <iostream.h>
const int MAX=200;
int main()
{
int i,j;
int n;
int a[MAX];
char ach[105];
cin>>n;
for (i=0;i<n;i++)
{
if (i!=0)
{
cout<<endl;
}
for (j=0;j<MAX;j++)
{
a[j]=0;
}
int num=0;
int len=0;
char ch;
cin>>ch;
while (ch!='0')
{
for (j=0;j<105;j++)
{
ach[j]=' ';
}

num=0;
while (ch!='')
{
ach[num]=ch;
num++;
cin.get(ch);
}
if (num>len)
len=num;
for (j=num-1;j>=0;j--)
{
a[num-j-1]+=int(ach[j]-48);
}
for (j=0;j<=len;j++)
{
if (a[j]>9)
{
a[j+1]+=a[j]/10;
a[j]=a[j]%10;
}
}
if (a[len+1]>0)
len++;
cin.get(ch);
}
if (a[len]!=0)
cout<<a[len];
for (j=len-1;j>=0;j--)
{
cout<<a[j];
}
cout<<endl;

}
return 0;
}
测试也对,但是老是WA.郁闷.

相乘:

/*********************************
* 两个超大数相乘算法
*********************************/

#i nclude
void main()
{
int a[30],b[30],c[60];
int i,j;

/* 给乘数和被乘数赋值,并把结果赋零 */
for (i=0;i<30;i++)
{
a[i]=i%10;
b[i]=i%10;
c[2*i]=0;
c[2*i+1]=0;
}

/* 给每位结果赋值,这里应该考虑清楚为什么这么写
还有这里的位的值的最大限度应该是-128 -- +127
所以就算是10*10也可以满足存进去一个char类型里 */
for(i=0;i<30;i++)
for(j=0;j<30;j++)
c[i+j]+=a[i]*b[j];
/* 这里把每个位>10的数进位和把余数重新赋值给这一位 */
for(i=0;i<59;i++)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}

/* 打印出来 */
for(i=0;i<30;i++)
printf("%d",a[30-i-1]);

printf("/n");

for(i=0;i<30;i++)
printf("%d",b[30-i-1]);

printf("/n");

for(i=0;i<60;i++)
printf("%d",c[60-i-1]);

printf("/n");

}

两整数相乘,一般计算过程(相乘、移位、相加)如下:

          4321
   ×)    999
      ----------
        38889
      38889
    38889
     ----------
    4316679

模拟该过程的C语言代码如下(整数在数组中逆序存放,结果是正序输出的,数组中每个元素用来存放整数中的每一位):

#i nclude <conio.h>
#i nclude <stdlib.h>

void product(int x[],int y[],int z[],int n,int m)
{
   int i,j;
   for(i=0;i<n+m-1;i++)
      z[i]=0;
   for(i=0;i<n;i++)
      for(j=0;j<m;j++)
          z[i+j]=z[i+j]+x[i]*y[j];
}

void chuli(int z[],int result[],int n)
{
   int i;
   int c=0;
   for(i=0;i<n;i++)
   {
     result[i]=(z[i]+c)%10;
     c=(z[i]+c)/10;
   }
   if(c!=0)
      result[i]=c;
   else
      result[i]=0;
}

void output(int array[],int n)
{
   int i;
   printf("/n");
   for(i=n;i>=0;i--)
      printf("%d",array[i]);
}

void main()
{
  int x[4]={1,2,3,4},y[3]={9,9,9},z[6],result[7];
  int i;
  product(x,y,z,4,3);
  chuli(z,result,6);
  clrscr();
  printf("/nThe first digital is:/n");
  output(x,3);
  printf("/nThe second digital is:/n");
  output(y,2);
  printf("/nThe result product is:/n");
  output(result,6);
}

 

/**************************************
    算法复杂度为:O(longhta*longthb)
    longtha为乘数的位数
    longhtb为被乘数的位数
***************************************/

#include <stdio.h>
#include <string.h>
#include <conio.h>
#define LEN 1000
void mult(char [],char [],char []);
main()
{
    char op1[LEN],op2[LEN],op3[LEN*2-1];
    scanf("%s%s",op1,op2);
    mult(op1,op2,op3);
    printf("%s/n",op3);
    getch();
    return 0;   
}    
void reverse(char a[])
{
    int longth=strlen(a);
    int i;
    for(i=0;i<longth/2;i++){
        char t;
        t=a[i];
        a[i]=a[longth-i-1];
        a[longth-i-1]=t;
    }
}
void mult(char op1[LEN],char op2[LEN],char ans[LEN*2-1])
{
    char top1[LEN];
    char top2[LEN];
    strcpy(top1,op1);
    strcpy(top2,op2);
    reverse(top1);
    reverse(top2);
    int k;
    for(k=0;k<strlen(top1)+strlen(top2);k++){
        ans[k]='0';
    }
    int i,j;
    int jw,ys;
    int longth;
    for(j=0;j<strlen(top2);j++){
        jw=0;
        for(i=0;i<strlen(top1);i++){
            ys=((top1[i]-'0')*(top2[j]-'0')+jw+ans[i+j]-'0')%10;
            jw=((top1[i]-'0')*(top2[j]-'0')+jw+ans[i+j]-'0')/10;
            ans[i+j]=ys+'0';
        }
        if(jw>0){
            ans[i+j]=jw+'0';
        }
    }
    longth=i+j-1;
    if(jw>0)
        ans[longth++]=jw+'0';
    ans[longth]='/0';
    reverse(ans);
}

/****************************************/
/*程序 pku1001*/
/*作者: S.Klaus */
/*日期:2005-7-5*/
/*调试:VC6*/
/****************************************

****************************************/


/*头函数 */
#include<iostream.h>

#include<iomanip.h>
#include<stdlib.h>
#include<string.h>

#define max 10000
/***************************************/
int fmul(char s1[],char s2[]);
/***************************************/

char sum[max];
char result[max];

/***************************************/
/*子函数计算两个数的乘积*/
int fmul(char s1[],char s2[])
{
   int ls1,ls2;//用于存储长度,进位信息
   int i=0,j,p,q,m;
   int k=0,flag;
   char mid[max];
   //char sum[max];
   ls1=strlen(s1);
   ls2=strlen(s2);
   //反向
   j=ls1-1;
   while(j>=0)
   {
    mid[i++]=s1[j--];
   }
   mid[i]=s1[ls1];
   strcpy(s1,mid);
   i=0;
   j=ls2-1;
   while(j>=0)
   {
    mid[i++]=s2[j--];
   }
   mid[i]=s2[ls2];
   strcpy(s2,mid);
 //  cout<<s1<<endl<<s2<<endl;
   //计算
   for(i=0;i<max;i++)
   {
    sum[i]='0';
   }
    i=j=k=0;
 flag=0;
 p=0;q=0;
   while(s2[i]!='/0')
 {
    flag=0;
     m=q;
  for(m=0;m<q;m++)
  {
   mid[m]='0';
  }
  p=m;
        while(s1[j]!='/0')
  {
           k=(s1[j]-'0')*(s2[i]-'0');
     mid[p]=(flag+k)%10+'0';
     flag=(flag+k)/10;
     j++;p++;
  }
  if(flag!=0){mid[p++]=flag+'0';}
        mid[p]='/0';
  flag=0;
  p=0;
//*********************************************/  
  if(i==0)
  {
   while(mid[p]!='/0')
   {
    sum[p]=mid[p];
    p++;
   }
  }
  else
  {  
     while(mid[p]!='/0')
   {
     k=(sum[p]-'0')+(mid[p]-'0');
                 sum[p]=(k+flag)%10+'0';
     flag=(k+flag)/10;
     p++;
    
   }
    if(flag!=0)
    {
   sum[p++]=flag+'0';
   flag=0;
    }
  }
  j=0;
  i++;q++;
 }
   sum[p]='/0';
   i=0;j=0;
   strcpy(mid,sum);
   p-=1;
   while(p>=0)
   {
    sum[j]=mid[p];
    p--;
    j++;
   }
   sum[j]='/0';
   return 0;
}
/***************************************/
/***************************************/

/***************************************/
/*主函数*/

int main()
{
  

  return 0;
}

 

 

/****************************************/
/*程序 pku1001*/
/*作者: S.Klaus */
/*日期:2005-7-5*/
/*调试:VC6*/
/****************************************

****************************************/


/*头函数 */
#include<iostream.h>

#include<iomanip.h>
#include<stdlib.h>
#include<string.h>

#define max 10000
/***************************************/
int fmul(char s1[],char s2[]);
/***************************************/

char sum[max];
char result[max];

/***************************************/
/*子函数计算两个数的乘积*/
int fmul(char s1[],char s2[])
{
   int ls1,ls2;//用于存储长度,进位信息
   int i=0,j,p,q,m;
   int k=0,flag;
   char mid[max];
   //char sum[max];
   ls1=strlen(s1);
   ls2=strlen(s2);
   //反向
   j=ls1-1;
   while(j>=0)
   {
    mid[i++]=s1[j--];
   }
   mid[i]=s1[ls1];
   strcpy(s1,mid);
   i=0;
   j=ls2-1;
   while(j>=0)
   {
    mid[i++]=s2[j--];
   }
   mid[i]=s2[ls2];
   strcpy(s2,mid);
 //  cout<<s1<<endl<<s2<<endl;
   //计算
   for(i=0;i<max;i++)
   {
    sum[i]='0';
   }
    i=j=k=0;
 flag=0;
 p=0;q=0;
   while(s2[i]!='/0')
 {
    flag=0;
     m=q;
  for(m=0;m<q;m++)
  {
   mid[m]='0';
  }
  p=m;
        while(s1[j]!='/0')
  {
           k=(s1[j]-'0')*(s2[i]-'0');
     mid[p]=(flag+k)%10+'0';
     flag=(flag+k)/10;
     j++;p++;
  }
  if(flag!=0){mid[p++]=flag+'0';}
        mid[p]='/0';
  flag=0;
  p=0;
//*********************************************/  
  if(i==0)
  {
   while(mid[p]!='/0')
   {
    sum[p]=mid[p];
    p++;
   }
  }
  else
  {  
     while(mid[p]!='/0')
   {
     k=(sum[p]-'0')+(mid[p]-'0');
                 sum[p]=(k+flag)%10+'0';
     flag=(k+flag)/10;
     p++;
    
   }
    if(flag!=0)
    {
   sum[p++]=flag+'0';
   flag=0;
    }
  }
  j=0;
  i++;q++;
 }
   sum[p]='/0';
   i=0;j=0;
   strcpy(mid,sum);
   p-=1;
   while(p>=0)
   {
    sum[j]=mid[p];
    p--;
    j++;
   }
   sum[j]='/0';
   return 0;
}
/***************************************/
/***************************************/

/***************************************/
/*主函数*/

int main()
{
  

  return 0;
}

干货|50个大数据面试问题及答案第一篇:10个大数据面试入门级问题 大数据时代才刚刚开始。随着越来越多的公司倾向于大数据运营,人才需求达到历史最高水平。这对你意味着什么?如果您想在任何大数据岗位上工作,它只能转化为更好的机会。您可以选择成为数据分析师,数据科学家,数据库管理员,大数据工程师,Hadoop大数据工程师等。在本文中,慧都网将介绍与大数据相关的前50大数据面试问题。 50个最受欢迎的大数据访谈和面试问题 为了使您的职业生涯更具优势,您应该为大数据面... 阅读详情

相关推荐

C++处理大数问题/高精度问题,看这就够了

将带你了解 1.大数加法 2.大数减法 3.辨识负数的大数加减法 4.大数乘法 5.大数除法

北北北 2万+

模拟计算器进行四则运算(同等优先级)(第2届第3题)

模拟计算器进行四则运算。假设只有+、-、*、/、=五种运算符,且它们优先级相等。输入=后会显示计算结果。

StrayedKing-245176013 1570

想发故障诊断论文?手把手教你用CWRU数据集复现第一个Baseline模型

本文提供了一份基于CWRU轴承数据集的故障诊断Baseline模型实战指南,手把手教你从数据准备到模型构建的全流程。通过详细的Python代码示例和学术级实验设计,帮助初学者快速复现第一个故障诊断模型,为发表高质量论文奠定基础。

weixin_28681255的博客 428

C语言实现整数四则运算表达式的计算

一、问题重述 【问题描述】 从标准输入中读入一个整数算术运算表达式,如5 - 1 * 2 * 3 + 12 / 2 / 2  = 。计算表达式结果,并输出。 要求: 1、表达式运算符只有+、-、*、/,表达式末尾的’=’字符表示表达式输入结束,表达式中可能会出现空格; 2、表达式中不含圆括号,不会出现错误的表达式; 3、出现除号/时,以整数相除进行运算,结果仍为整数,例如:5/3结果应

dannis_bh的博客 4万+

机器学习发展历史及现状(重要的期刊,会议,大牛总结)

1 引言 机器学习是指通过计算机学习数据中的内在规律性信息,获得新的经验和知识,以提高计算机的智能性,使计算机能够像人那样去决策。随着各行业对数据的需求量增多,对处理和分析数据的效率要求变高,一系列机器学习算法应运而生。机器学习算法主要是指通过数学及统计方法求解最优化问题的步骤和过程。针对不同的数据和不同模型需求,选择和使用适当的的机器学习算法可以更高效地解决一些实际问题。本文将从机器学习的起源...

Oscar2018的博客 5万+

ACM:大数问题

大数问题参考

weixin_44857642的博客 275

一个三极管和稳压管构成的简易稳压电源

一、对电压精度要求不高的场所可以使用本文中所述的简易稳压电源(电流变化引起 的基极-发射极的压降 变化 对输出电压来说可以容忍)二、根据负载实际需求选择三极管,不同的三极管集电极电流不同,电流放大倍数不同(1、尽量选择负载电流(iC 或 iE)上限时,hFE仍然比较理想的三极管,2、一般三极管对基极电流没有限制,可以适当调整基极电流以获得所需输出电流)

五花带点肉 1万+

Python解决大数问题的全面指南

Python大数处理解决方案摘要 Python凭借其任意精度整数类型,成为处理大数问题的理想工具。本文全面介绍Python处理大数的方法: 核心优势:Python整数类型(int)自动支持任意精度,仅受内存限制 基础操作: 大数声明与四则运算语法与普通数字一致 支持超大数的比较运算 实用解决方案: 大数阶乘计算 斐波那契数列大数版 快速幂模运算(加密算法核心) Karatsuba算法优化大数乘法 高级技巧......

m0_53889456的博客 1677

Triton server的部署、构建、backend插件机制代码梳理、模型加载、自定义C++backend流程

Triton inference server的部署、构建、backend机制代码详细梳理、模型加载过程、自定义C++backend流程.

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 473

人体红外传感器HC-SR501

本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。

weixin_43772611的博客 1万+

【手撕代码】大数问题:大数相加和大数相乘问题 + Karatsuba 算法

目 录: 1、大数相加 2、大数相乘 3、Karatsuba 算法 大数问题,简而言之就是不可以使用 int 类型直接进行加减乘除的操作,需要将其转换为字符串后再进行操作。 1、大数相加 分析:将两个数字字符串转换成相同长度,短的数字高位补 0,主要的操作在于两个字符串对应位置相加后得到的结果是否需要进位的问题,最后还需要剔除结果数组中高位为 0 的数。 public class...

Java学习 1123

如何在 Windows 中实时打开字幕

在 Windows 操作系统中,你可以使用编程来实现实时字幕功能,以便在屏幕上显示即时的文字内容。下面是一个示例代码,展示了如何使用Python编程语言在Windows上实现实时字幕功能。这样,字幕窗口将会不断地显示系统当前时间作为字幕。你可以根据自己的需求修改主循环中的内容,以显示你想要的实时字幕。希望以上代码和说明能够帮助你在Windows中实现实时字幕功能。函数创建了一个顶级窗口,并设置窗口的样式、位置和大小。方法,用于在字幕窗口中显示指定的字幕内容。上述代码中,我们使用了Python的。

DevWizard的博客 3270

Java之大数问题

文章目录 Java 这玩意好是好但是相对于Python这类动态语言而言有一个要命的问题,那就是类型带来的一些问题,由于Java 算是一个半静态语言,在声明一个变量的时候会在内存根据类型给你开一个内存。那么这样一来问题就来了,如果我的数贼大就相当容易溢出。有些题目说了可以取余还好办,但是如果没说咋办。那就只能考虑大数问题了。这样一来我们需要考虑的问题就太多了。 不过还好在Java里面其实是有专门处理大数问题的API的。核心的实现原理的话其实和咱们的Python解释器实现Python 1+1 是一样的。 这里咱

`or 1 or 不正经の泡泡 2270

PostgreSQL 异常排查:读取流时发生异常 (x80004005)

通过以上步骤,您应该能够解决在 .NET Core 中与 PostgreSQL 数据库进行交互时出现异常 (x80004005) 的问题。确保数据库连接正确,查询语句准确,并使用兼容的驱动程序版本。如有必要,可以捕获异常并查看详细的错误信息,以便更好地排查问题。在使用 .NET Core 开发应用程序时,如果在与 PostgreSQL 数据库进行交互时遇到异常,例如在读取数据流时发生异常 (x80004005),我们需要进行排查和修复。另外,还可以尝试捕获异常并打印异常信息,以便更好地了解问题所在。

XwlyVue的博客 1621

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大数计算问题

正如我们所知道的,c语言中不管是long 还是longlong 其精度始终是有限的,所以在计算大数的时候很容易就会发生精度溢出问题,所以在面对大数计算的时候我们就只能采取用数组进行模拟的方式来进行计算 这是阶乘的模拟计算 void calc(int x){ int i=0,j=0; int tmp=1; int tmp1=0; a[0]=1; f

曾经沧海难为水,除却巫山不是云 776

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《大数问题》— 大数问题汇总

Problem D: Integer Inquiry Time Limit:1 SecMemory Limit:128 MB Submit:59Solved:18 [Submit][Status][Web Board] Description One of the first users of BIT's new supercomputer was Chip Diller. ...

69小石头的博客 1403

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

大数阶乘——大数问题

首先,阶乘的定义为:所有小于及等于该数的正整数的积,并且定义 0 的阶乘为1。自然数n的阶乘写作n!。n!=1*2*3*4*...*n;明白了阶乘的意义,那么如何用代码去实现呢?如果你想用long long去定义类型,那么我们只能计算出很小的数的阶乘,但是如果要求我们去求500甚至5000的阶乘呢?可能你会觉得500也不大,那么咱先看一下100的阶乘:100!= 933262154439441...

博客 1280

大数据发展的问题与机遇

 最大的问题不是大数据本身,而是我们如何使用它。   大数据时代已经到来,它将颠覆一个个行业,使世界格局发生重大变化。这些年来,政府和各行各业的广泛支持和重视,使得大数据市场一直快速发展。然而,这是不是就意味着大数据会迅速横扫各行业,渗透到社会的方方面面,把我们在梦里或者科幻电影里见到的画面变成现实呢?怕是没那么简单。   《2017中国大数据发展报告》中显示,政府投资大数据项目数量整体呈攀升态势...

Myhoooyo的博客 1039

大数乘法问题

由于高级程序语言数据类型有一定的范围,不能利用原子类型存储过大的数据,所以,大数的乘法问题对算法的初学者有一定的挑战性、练习性。以下是自己对大数乘法问题的解决,因为自己能力不行,没有完成代码的优化工作,仅仅利用此文章记录自己的学习过程。也希望各位大神指导指导。 一、问题:实现大数的乘法。 二、分析问题: 1、因为原子类型的范围限制,自己选用数组对大数进行存储(也可以用STL 的 vector...

qq_39816087的博客 928

JAVA大数问题

目录大数求余问题1.循环求余法2.快速幂求余法剪绳子的大数问题今日推歌 大数求余问题 当求解x的a次幂时,可能会出现大数越界的问题,超出int32位,所以很多题目要求对结果进行1000000007的取余,这个数字在int32的范围之内 1000000007的平方超出了int32的范围,但是在long64的范围之内 思路: (a+b)%c=(a%c+b%c)%c a % c = ( a % c ) % c ( a b ) % c = [ ( a % c ) ( b % c ) ] % c 1.循环求余

星回昭以烂的博客 598
上一篇: 大局观:泛型程序设计
下一篇: VC++中使用内存映射文件处理大文件
manplus
博客等级 码龄22年 6粉丝 160原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值