信息学奥赛一本通:1308:【例1.5】高精除

1308:【例1.5】高精除


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 15501     通过数: 7597 

【题目描述】

高精除以高精,求它们的商和余数。

【输入】

输入两个低于300位的正整数。

【输出】

输出商和余数。

【输入样例】

1231312318457577687897987642324567864324567876543245671425346756786867867867
1231312318767141738178325678412414124141425346756786867867867

【输出样例】

999999999748590
179780909068307566598992807564736854549985603543237528310337

用了三天时间完成

用的字符处理,如果用整形数组,在做除时,大约一个道理

#include<iostream>
#include<cmath> 
#include<cstring>
char a[305],b[305],c[3005],sum[305];
int dashuchu(char p[],char q[],int n,int i)//大数除法,pq没用,就是ab 
{
    int x,y=0,k;
    do    {
        for(x=n-1;x>=0;x--)//从个位开始计算 
    {
        if(a[x]<b[x]){//先比较大小,要够减的 
            a[x-1]--;//高位减1,低位 加10 
            a[x]+=10;
        }
        a[x]=a[x]-b[x]+'0';//减出来 
        } y++;//就 是商1了 
     }while(strcmp(a,b)>0||strcmp(a,b)==0);//当a不小于b时,继续做 
    for(x=0,k=i;x<n;x++,k++)
    c[k]=a[x];// 做完了除(就是减),a把余下的归还c的相应数位 
    return y;//返还减的次数(即商) 
}
using namespace std;
int main()
{
    scanf("%s\n %s",c,b);//被除数和除数 
    int m,n,j,i,t;
    n=strlen(b);// 字串的长度 ,除数的长度,下面用的较多 
    m=strlen(c);
    for(i=0;i<=m-n;i++)//商的长度最大是m-n+1,置0字符 
    sum[i]='0';
    for(i=0;i<=m-n;i++){//开始计算,从0位即高位开始,商位数是m-n+1或是m-n 
    //从这再开始计算 
    for(j=0,t=i;j<n;j++,t++)//从c被除数中取和除数相同位数的字串
                           //到a中,从0位开始 
    a[j]=c[t];
    a[j]='\0';//最后加字串结束符号 
    if(strcmp(a,b)>=0)//如果能除,有商 
    sum[i]+=(char)dashuchu(a,b,n,i); //相应的商位上,放上数 
        //a是被除数,最后是余下的;b是除数,不变;n除数长度,i第几位了
    {       //a不大于b时 
    c[i+1]=(c[i]-'0')*10+c[i+1];//剩下的被除数高位*10加在低一个的位上 
    c[i]='\0';//原来的位上放字符0 
    
    }//这样求出商的一位,再从上面的循环再开始 
      }
      i=0;
      while(sum[i]=='0')i++;//erase the zero.
      for(;i<m-n+1;i++)//不能大于商的长度 
      putchar(sum[i]);
      printf("\n");
      i=0;
      while(a[i]=='0')i++;//找余数,去0 
      if(i==n)//全是0 
      printf("0");
      else 
      for(;i<n;i++)
     putchar(a[i]);//还剩下的 
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2021年,百度Apollo平台的高精度地图在自动驾驶技术的发展中起到了重要的作用。高精度地图作为自动驾驶的基础设施之一,可以提供详细的道路信息、准确的车道线和交标志等数据,是实现车辆定位、路径规划和场景感知的重要参考。 目前,百度高精度地图已经覆盖了全国主要城市及部分县区,拥有海量的道路数据和POI信息。过大量的数据采集和人工标注,地图的准确性和可靠性得到了提升。此外,百度Apollo平台结合高精度地图与传感器数据相结合,实现了车辆在复杂路况下的高精度定位和精准驾驶。 然而,百度高精地图也面临一些挑战。首先,地图更新速度是一个问题。道路建设和交情况变化频繁,需要及时更新地图信息,以保持高精度地图的准确性。其次,地图数据的实时性需要进一步提升。传感器数据收集和处理的延迟可能导致地图信息与实际道路情况之间存在差异。另外,地图数据的安全保护也是一个重要问题。高精度地图包含了大量的位置和道路信息,如何确保地图数据不被恶意攻击和篡改是一个挑战。 为了应对上述挑战,百度团队不断进行技术创新和研发。过引入更多的传感器和高精度定位技术,可以实现对地图数据的实时更新和精确性的提升。同时,加强对地图数据的加密和安全机制,保证地图信息的安全性和完整性。此外,百度还与政府部门和其他合作伙伴合作,共同推动道路数据的更新和共享,以更好地满足自动驾驶技术发展的需求。 总而言之,百度Apollo的高精度地图在2021年的现状是覆盖范围广泛、准确性较高,并在自动驾驶技术发展中发挥了重要作用。虽然面临着更新速度、实时性和安全性等挑战,但过持续的技术创新和合作伙伴的参与,百度有信心进一步提升高精度地图的性能,为自动驾驶技术的普及和应用提供更加稳定和可靠的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值