高精加

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define M 100000
char al[M],bl[M];
int  a[M],b[M],c[M];
int longa,longb;
void yawei()
{
    int i,j,k=1;
    for( i=longa-1,j=1;i>=0;i--)
      {
         if (k==10000) j++,k=1;
         a[j]+=k*(al[i]-‘0‘);
         k*=10;
      }
    longa=j;
    i,j,k=1;
    for( i=longb-1,j=1;i>=0;i--)
      {
         if (k==10000) j++,k=1;
         b[j]+=k*(bl[i]-‘0‘);
         k*=10;
      }
    longb=j;

}
int main()
{
    //gets(al);gets(bl);
    scanf("%s%s",al,bl);
    longa=strlen(al);longb=strlen(bl);
    int longl;
    yawei();
    longl=max(longa,longb);
    int i=1,cc=0;
    for(;i<=longl;i++)
    {
        c[i]=(a[i]+b[i]+cc)%10000;前一位进位会对本位进位产生影响,所以应该先加后除。
        cc=(a[i]+b[i]+cc)/10000;
    }
    if(cc)    c[++longl]=cc;

    printf("%d",c[longl]);
    for(int i=longl-1;i>=1;i--)
    printf("%04d",c[i]);
    return 0;
}
时间: 2024-11-03 03:45:21

高精加的相关文章

c++普通高精加

//作为一名蒟蒻,还请诸位不要吐槽. //第一次打c++高精加,内心有点小激动. //为codevs3116 高精度练习之加法 //程序太简单,就不打注释了. #include<cstdio>#include<cstring>int main(){char s1[600],s2[600];int a1[600],a2[600],a3[600]={0},len1,len2,i;scanf("%s",s1);scanf("%s",s2);len1

HDOJ1002-A + B Problem II(高精加)

Problem Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. Input The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines fol

高精加,高精乘单精

#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<queue> using namespace std; const int Max=1000; int Top=1,Mtop=0,add[Max]; int High(int a) { add

B进制星球(多进制 高精加)

https://www.luogu.org/problemnew/show/P1604 B(2<=B<=36)进制计数.编写实现B进制加法的程序. 输入输出格式 输入格式: 共3行第1行:一个十进制的整数,表示进制B.第2-3行:每行一个B进制数正整数.数字的每一位属于{0,1,2,3,4,5,6,7,8,9,A,B--},每个数字长度<=2000位. 输出格式: 一个B进制数,表示输入的两个数的和. 思路: 输入的时候把A~Z换成数字 存, 输出的时候把数字换成 A~Z 输出 1 #i

模板——高精系列

存放一下高精的模板 高精加: #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> using namespace std; int a[1001],b[1001],c[1001],lena,lenb; char a1[1001],b1[1001]; int main(){ gets(a1); gets(b1); lena=strlen(a1); lenb=strlen

压位高精

压位高精:即通过将原来数组中一个位置存一位数,改为一个位置存p位数(8-10).本质上是一种利用进制转换思想的压缩方式. 压位高精VS普通高精优势: 1.节省空间.(10倍以上) 2.节省时间(循环次数少)(10倍) 3.在对于高精与低精(乘法不超int)运算时,可以利用进制较高的优势,达到简化代码量的目的.(不需要频繁进位) 例题:洛谷 P3223 组合数学+高精乘低精. #include<cstdio> #include<algorithm> #include<iostr

高精总结(未完结)

高精度是一种计算方式,如果数据过大,会爆掉longlong,就需要用数组来模拟每一位,进行加减乘除,模拟进退位. 用高精时,要将个位赋值在数组第一个,输出时反向输出,不要弄反,不然会紊乱: 高精加 多考虑进位,这是重点: #include<iostream> #include<cstring> using namespace std; int x=0,a1[241],a2[241],b[241],o; string s1,s2; void ax() { cin>>s1&

qml 绘制高精地图之怀疑人生的加载速度

绘制高精地图时需要gps的经纬度坐标,之前的实现方式是QGeocoordinate类的经纬度变量通过json的方式在qml中使用. 以画线为例,使用方式是这样哒. 1 for(var i in vehicleMapProcess.laneMedian){ // 道路条数 2 var newMapLaneMedian = Qt.createQmlObject('import QtLocation 5.9;import QtPositioning 5.5; // 这里只画中线 3 MapPolyli

高精模板(加减乘)

啥都不说直接上板子吧 QAQ #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<cstdlib> using namespace std; const int N=100100; int len; int c[N],a[N],b[N]; string s,s1; //高精加法 inline