高精度相關模板.

  1 ```
  2 /*
  3 高精度加法.
  4 */
  5 #include<cstring>
  6 #include<cstdio>
  7 #include<iostream>
  8 #define MAXN 10001
  9 using namespace std;
 10 int a[MAXN],b[MAXN],c[MAXN],l1,l2,l3;
 11 char m[MAXN],n[MAXN];
 12 void slove()
 13 {
 14     l3=max(l1,l2);
 15     for(int i=1;i<=l3;i++)
 16     {
 17         c[i]+=a[i]+b[i];
 18         c[i+1]+=c[i]/10;
 19         c[i]%=10;
 20     }
 21     if(c[l3+1]) l3++;
 22     while(!c[l3]&&l3>1) l3--;
 23     for(int i=l3;i>=1;i--) printf("%d",c[i]);
 24 }
 25 int main()
 26 {
 27     freopen("add.in","r",stdin);
 28     freopen("add.out","w",stdout);
 29     scanf("%s",m+1);l1=strlen(m+1);
 30     scanf("%s",n+1);l2=strlen(n+1);
 31     for(int i=1;i<=l1;i++) a[i]=m[l1-i+1]-48;
 32     for(int i=1;i<=l2;i++) b[i]=n[l2-i+1]-48;
 33     slove();
 34     return 0;
 35 }
 36 ```
 37 
 38 ```
 39 /*
 40 高精度減法.
 41 */
 42 #include<cstring>
 43 #include<cstdio>
 44 #include<iostream>
 45 #define MAXN 10001
 46 using namespace std;
 47 int a[MAXN],b[MAXN],c[MAXN],l1,l2,l3;
 48 char m[MAXN],n[MAXN];
 49 void pre()
 50 {
 51     if(l1>l2) 
 52     {
 53         for(int i=1;i<=l1;i++) a[i]=m[l1-i+1]-48;
 54         for(int i=1;i<=l2;i++) b[i]=n[l2-i+1]-48;
 55     }
 56     else if(l1<l2){
 57         printf("-");
 58         for(int i=1;i<=l1;i++) b[i]=m[l1-i+1]-48;
 59         for(int i=1;i<=l2;i++) a[i]=n[l2-i+1]-48;
 60     }
 61     else if(strcmp(m+1,n+1)>=0)
 62     {
 63         for(int i=1;i<=l1;i++) a[i]=m[l1-i+1]-48;
 64         for(int i=1;i<=l2;i++) b[i]=n[l2-i+1]-48;
 65     }
 66     else {
 67         printf("-");
 68         for(int i=1;i<=l1;i++) b[i]=m[l1-i+1]-48;
 69         for(int i=1;i<=l2;i++) a[i]=n[l2-i+1]-48;
 70     }
 71 }
 72 void slove()
 73 {
 74     l3=max(l1,l2);
 75     for(int i=1;i<=l3;i++)
 76     {
 77         if(a[i]<b[i]) a[i+1]--,a[i]+=10;
 78         c[i]=a[i]-b[i];
 79     }
 80     while(!c[l3]&&l3>1) l3--;
 81     for(int i=l3;i>=1;i--) printf("%d",c[i]);
 82 }
 83 int main()
 84 {
 85     freopen("sub.in","r",stdin);
 86     freopen("sub.out","w",stdout);
 87     scanf("%s",m+1);l1=strlen(m+1);
 88     scanf("%s",n+1);l2=strlen(n+1);
 89     pre();
 90     slove();
 91     return 0;
 92 }
 93 ```
 94 
 95 ```
 96 /*
 97 高精度乘法.
 98 */
 99 #include<cstring>
100 #include<cstdio>
101 #include<iostream>
102 #define MAXN 10001
103 using namespace std;
104 int a[MAXN],b[MAXN],c[MAXN],l1,l2,l3;
105 char m[MAXN],n[MAXN];
106 void slove()
107 {
108     int x;
109     l3=l1+l2;
110     for(int i=1;i<=l1;i++)
111     {
112         int x=0;
113         for(int j=1;j<=l2;j++)
114         {
115             c[i+j-1]+=a[i]*b[j];
116             c[i+j]+=c[i+j-1]/10;
117             x=c[i+j-1]/10;
118             c[i+j-1]%=10;
119         }
120         c[i+l2]=x;
121     }
122     if(c[l3+1]) l3++;
123     while(!c[l3]&&l3>1) l3--;
124     for(int i=l3;i>=1;i--) printf("%d",c[i]);
125 }
126 int main()
127 {
128     freopen("mul.in","r",stdin);
129     freopen("mul.out","w",stdout);
130     scanf("%s",m+1);l1=strlen(m+1);
131     scanf("%s",n+1);l2=strlen(n+1);
132     for(int i=1;i<=l1;i++) a[i]=m[l1-i+1]-48;
133     for(int i=1;i<=l2;i++) b[i]=n[l2-i+1]-48;
134     slove();
135     return 0;
136 }
137 ```
138 
139 ```
140 /*
141 高精度除法.
142 */
143 #include<cstring>
144 #include<cstdio>
145 #include<iostream>
146 #define MAXN 10001
147 using namespace std;
148 int a[MAXN],b[MAXN],c[MAXN],tmp[MAXN],l1,l2,l3;
149 char m[MAXN],n[MAXN];
150 bool cmp()
151 {
152     if(tmp[0]>l1) return false;
153     if(l1>tmp[0]) return true;
154     for(int i=l1;i>=1;i--)
155     {
156         if(a[i]>tmp[i]) return true;
157         if(a[i]<tmp[i]) return false;
158     }
159     return true;
160 }
161 bool cmp1()
162 {
163     for(int i=1;i<=l1;i++)
164     {
165         if(m[i]>n[i]) return true;
166         if(m[i]<n[i]) return false;
167     }
168     return true;
169 }
170 void slovejian()
171 {
172     for(int i=1;i<=l1;i++)
173     {
174         if(a[i]<tmp[i]) a[i+1]--,a[i]+=10;
175         a[i]-=tmp[i];
176     }
177     while(!a[l1]&&l1>1) l1--;
178 }
179 void slove()
180 {
181     l3=l1-l2+1;
182     for(int i=l3;i>=1;i--)
183     {
184         memset(tmp,0,sizeof tmp);
185         for(int j=1;j<=l2;j++) tmp[i+j-1]=b[j];
186         tmp[0]=l2+i-1;
187         while(cmp()) c[i]++,slovejian();
188     }
189     while(!c[l3]&&l3>1) l3--;
190     for(int i=l3;i>=1;i--) printf("%d",c[i]);
191 }
192 int main()
193 {
194     scanf("%s",m+1);l1=strlen(m+1);
195     scanf("%s",n+1);l2=strlen(n+1);
196     if(l1>l2)
197     {
198         for(int i=1;i<=l1;i++) a[i]=m[l1-i+1]-48;
199         for(int i=1;i<=l2;i++) b[i]=n[l2-i+1]-48;
200     }
201     else if(l1<l2)
202     {
203         for(int i=1;i<=l1;i++) b[i]=m[l1-i+1]-48;
204         for(int i=1;i<=l2;i++) a[i]=n[l2-i+1]-48;
205         int t;t=l1,l1=l2,l2=t;
206     }
207     else if(cmp1())
208     {
209         for(int i=1;i<=l1;i++) a[i]=m[l1-i+1]-48;
210         for(int i=1;i<=l2;i++) b[i]=n[l2-i+1]-48;
211     }
212     else 
213     {
214         for(int i=1;i<=l1;i++) b[i]=m[l1-i+1]-48;
215         for(int i=1;i<=l2;i++) a[i]=n[l2-i+1]-48;
216         int t;t=l1,l1=l2,l2=t;
217     }
218     slove();
219     return 0;
220 }
221 ```
222 ```
223 /*
224 高精度取模求余.
225 */
226 #include<cstring>
227 #include<cstdio>
228 #include<iostream>
229 #define MAXN 10001
230 using namespace std;
231 int a[MAXN],b[MAXN],ans[MAXN],c[MAXN],tmp[MAXN],l1,l2,l3;
232 char m[MAXN],n[MAXN];
233 bool cmp()
234 {
235     if(tmp[0]>l1) return false;
236     if(l1>tmp[0]) return true;
237     for(int i=l1;i>=1;i--)
238     {
239         if(a[i]>tmp[i]) return true;
240         if(a[i]<tmp[i]) return false;
241     }
242     return true;
243 }
244 void slovejian()
245 {
246     for(int i=1;i<=l1;i++)
247     {
248         if(a[i]<tmp[i]) a[i+1]--,a[i]+=10;
249         a[i]-=tmp[i];
250     }
251     while(!a[l1]&&l1>1) l1--;
252 }
253 void chu()
254 {
255     l3=l1-l2+1;
256     for(int i=l3;i>=1;i--)
257     {
258         memset(tmp,0,sizeof tmp);
259         for(int j=1;j<=l2;j++) tmp[i+j-1]=b[j];
260         tmp[0]=l2+i-1;
261         while(cmp()) c[i]++,slovejian();
262     }
263 }
264 void mul()
265 {
266     memset(tmp,0,sizeof tmp);
267     tmp[0]=l2+l3;
268     for(int i=1;i<=l2;i++)
269     {
270         int x=0;
271         for(int j=1;j<=l3;j++)
272         {
273             tmp[i+j-1]+=b[i]*c[j];
274             x=tmp[i+j-1]/10;
275             tmp[i+j]+=tmp[i+j-1]/10;
276             tmp[i+j-1]%=10;
277         }
278         tmp[i+l3]=x;
279     }
280     if(tmp[tmp[0]+1]) tmp[0]++;
281     while(tmp[tmp[0]]&&tmp[0]>1) tmp[0]--;
282 }
283 void slove()
284 {
285     chu();mul();
286     ans[0]=max(l2,l3);
287     for(int i=1;i<=ans[0];i++)
288     {
289         if(ans[i]<tmp[i]) ans[i+1]--,ans[i]+=10;
290         ans[i]-=tmp[i];
291     }
292     while(!ans[ans[0]]&&ans[0]>1) ans[0]--;
293     for(int i=ans[0];i>=1;i--) printf("%d",ans[i]);
294 }
295 int main()
296 {
297     scanf("%s",m+1);l1=strlen(m+1);
298     scanf("%s",n+1);l2=strlen(n+1);
299     for(int i=1;i<=l1;i++) a[i]=m[l1-i+1]-48,ans[i]=a[i];
300     for(int i=1;i<=l2;i++) b[i]=n[l2-i+1]-48;
301     slove();
302     return 0;
303 }
304 ```
305 ```
306 /*
307 高精度錯排公式.
308 f[n]=(n-1)(f[n-1]+f[n-2]).
309 */
310 #include<iostream>
311 #include<cstring>
312 #include<cstdio>
313 #define MAXN 201
314 #define MAXM 1001
315 using namespace std;
316 int f[MAXN][MAXM],n,tmp[MAXM],t[MAXM];
317 int read()
318 {
319     int x=0,f=1;char ch=getchar();
320     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
321     while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
322     return x*f;
323 }
324 void slove(int x)
325 {
326     memset(t,0,sizeof t);
327     while(x) t[++t[0]]=x%10,x/=10;return ;
328 }
329 void add(int c[],int a[],int b[])
330 {
331     c[0]=a[0]+b[0];
332     for(int i=1;i<=c[0];i++)
333     {
334         c[i]+=a[i]+b[i];
335         c[i+1]+=c[i]/10;
336         c[i]%=10;
337     }
338     if(c[c[0]+1]) c[0]++;
339     while(!c[c[0]]&&c[0]>1) c[0]--;
340     return;
341 }
342 void mul(int c[],int a[],int b[])
343 {
344     c[0]=a[0]+b[0];
345     for(int i=1;i<=a[0];i++)
346     {
347         int x=0;
348         for(int j=1;j<=b[0];j++)
349         {
350             c[i+j-1]+=a[i]*b[j];
351             c[i+j]+=c[i+j-1]/10;
352             x=c[i+j-1]/10;
353             c[i+j-1]%=10;
354         }
355         c[i+b[0]]=x;
356     }
357     while(!c[c[0]]&&c[0]>1) c[0]--;
358     return;
359 }
360 int main()
361 {
362     n=read();
363     if(n==0){printf("1");return 0;}
364     f[1][0]=1,f[1][1]=0;
365     f[2][0]=1,f[2][1]=1;
366     for(int i=3;i<=n;i++)
367     {
368         memset(tmp,0,sizeof tmp);
369         add(tmp,f[i-1],f[i-2]);
370         slove(i-1);
371         mul(f[i],t,tmp);
372     }
373     for(int i=f[n][0];i>=1;i--) printf("%d",f[n][i]);
374     return 0;
375 }
376 ```

?

轉載于:https://www.cnblogs.com/nancheng58/p/6074029.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372007.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372007.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372007.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

5分鐘內Google App Engine上的Vaadin App

在本教程中&#xff0c;您將學習如何創建第一個Vaadin Web應用程序&#xff0c;如何在本地AppEngine開發服務器上運行它以及如何將其部署到Google App Engine基礎結構。 所有這些大約需要5到10分鐘。 是的&#xff0c;如果您安裝了必要的先決條件&#xff0c;則可以立即開始運行…

linux系統調用的封裝格式,ARM Linux系統調用的原理

ARM Linux系統調用的原理ARM Linux系統調用的原理操作系統為在用戶態運行的進程與硬件設備進行交互提供了一組接口。在應用程序和硬件之間設置一個額外層具有很多優點。首先&#xff0c;這使得編程更加容易&#xff0c;把用戶從學習硬件設備的低級編程特性中解放出來。其次&…

(延遲兩秒,跳轉相應頁面)(返回到上一個頁面并刷新)

1.setTimeout("window.location.href /moment/reason",2000);2.返回到上一個頁面并刷新 self.location document.referrer;2.1常見的幾種刷新方式 a.history.go(-1) 返回上一頁 b.location.reload() 刷新當前頁面 c.history.back() 返回上一頁2.2當…

檢索字符創 php

strstr()可以返回匹配的值 echo strstr("localhost", "os");返回ost echo substr_count("gggggs", "g"); 返回檢索匹配字符創次數 substr_replace 字串替換函數轉載于:https://www.cnblogs.com/lidepeng/p/6078064.html

android8強制將app移到sd卡,小內存手機?APP強制轉移至SD卡教程

雖然近兩年手機的機身內存越做越大&#xff0c;但是身邊總還是有些朋友在使用幾年前的手機。而面對如今海量的豐富應用&#xff0c;早年的手機中內置的存儲空間已經開始捉襟見肘。雖說對于這類機型系統通常都提供了將APP轉移至外置內存卡的功能&#xff0c;可是依然有一些頑固的…

在沒有XML的情況下測試Spring和Hibernate

我非常熱衷于Spring 3中的改進&#xff0c;這些改進最終使您能夠在IDE和編譯器的適當支持下從XML遷移到純Java配置。 它并沒有改變Spring是一個龐大的套件這一事實&#xff0c;并且有時發現您需要的東西可能需要一段時間。 圍繞Hibernate的無XML單元測試就是這樣一回事。 我知道…

Observer觀察者設計模式

Observer設計模式主要包括以下兩種對象: (1)被觀察對象:Subject,它往往包含其他對象感興趣的東西,上面例子中熱水器中就是Subject(被監視對象); (2)觀察對象:Observer,它觀察著Subject,當Subject中的某件事發生后,會告知Observer,Obersver會采取相應的行動。上面例子中顯示器和…

最小生成樹 prime zoj1586

題意&#xff1a;在n個星球&#xff0c;每2個星球之間的聯通需要依靠一個網絡適配器&#xff0c;每個星球喜歡的網絡適配器的價錢不同&#xff0c;先給你一個n&#xff0c;然后n個數&#xff0c;代表第i個星球喜愛的網絡適配器的價錢&#xff0c;然后給出一個矩陣M[i][j]代表第…

android 書架菜單,Android入門3--做一個書架

修改名稱創建項目的時候&#xff0c;APP的名字取為英文或者拼音&#xff0c;是為了簡便&#xff0c;但是顯示在界面上&#xff0c;我們當然希望它是中文的。taoguanstring>我們要做的很簡單&#xff0c;就是在string.xml中&#xff0c;將app_name的內容修改為我們希望的名字…

第一節:整體介紹

Python版本3.5.2&#xff0c;Django版本1.10 創建一個Django工程&#xff0c;并且生成一個名字為mainsite的app django-admin.py startproject myblog python3 manage.py startapp mainsite 文件結構如下&#xff1a; x-powerxpower-CW65S:~/chen/myblog$ tree ./ ./ ├── ma…

Spring @Configuration和FactoryBean

考慮使用FactoryBean通過Spring配置文件定義緩存&#xff1a; <cache:annotation-driven /><context:component-scan base-packageorg.bk.samples.cachexml></context:component-scan><bean idcacheManager classorg.springframework.cache.support.Simpl…

cookie解決 未登錄加入購物車 第一次訪問彈出新手引導頁面

瀏覽器攜帶cookie到服務器, 點擊加入購物車-->后臺檢查-->是否登錄(有沒有sessionid) 沒有登錄--->secookie()返回給瀏覽器,把傳遞過來的商品id, 屬性(多個屬性逗號拼接),數量存起來,(序列號成字符串_不同屬性用下劃線拼接) 轉載于:https://www.cnblogs.com/bj-tony/p…

REST + Spring Security會話問題

REST &#xff0c; 會話 ..等待。 REST應用程序中沒有會話&#xff0c;對嗎&#xff1f; 好吧&#xff0c;那是真的。 如果我們可以避免會議&#xff0c;我們應該這樣做。 REST是無狀態的 。 有關無狀態性的主要問題是身份驗證。 在通常的Web應用程序中&#xff0c;我們習慣于在…

程序猿果真有前端后端client嗎

前端 后端 client DBA OP 程序猿有分這么細的嗎?入行時候有區別. 殊途同歸 吾道一以貫之, 假設作為程序猿不能領悟一貫, 則永遠不清楚.轉載于:https://www.cnblogs.com/blfbuaa/p/6970139.html

HarmonyOS硬件創新合作伙伴,【HarmonyOS】HarmonyOS智能硬件開發學習指南 - HDC2020

2020年9月10日&#xff0c;華為HarmonyOS 2.0版本正式官宣&#xff01;這一次&#xff0c;借助 HarmonyOS 全場景分布式系統和設備生態&#xff0c;將定義全新的硬件、交互和服務體驗&#xff0c;打開煥然一新的全場景世界&#xff0c;不愧是HarmonyOS&#xff01; 那HarmonyOS…

處于RUNNABLE狀態的Java線程未真正運行

最近&#xff0c;我在Java應用程序服務器安裝上進行了分析/調整&#xff0c;以識別瓶頸并修復它們。 在此過程中&#xff08;調整&#xff09;&#xff0c;最常見的操作是在系統加載時檢索許多線程轉儲。 請記住&#xff0c;重載&#xff08;在某些情況下&#xff09;可能會產生…

2.3 關系完整性

關系模型的完整性規則是對關系的某種約束條件。 也就是說關系的值隨著時間變化時應該滿足一些約束條件。 &#xff08;這些約束條件實際上是現實世界的要求。任何關系在任何時刻都要滿足這些語義約束&#xff09; 關系模型中有三類完整性約束&#xff1a; 實體完整性 &#xff…

Android 顏色大全color.xml

使用方法&#xff1a; 將color.xml文件拷到res/values目錄下后我們只需要R.xml文件名稱.name名稱就可以調用了(例如:R.color.red) <?xml version"1.0" encoding"utf-8"?><resources> <color name"white">#FFFFFF</color&…

鴻蒙系統華為論壇,2020中國汽車論壇上 華為三大鴻蒙車載OS系統

在今天的2020中國汽車論壇上&#xff0c;華為公布了三大鴻蒙車載OS系統&#xff0c;同時還宣布已經有大量合作伙伴基于鴻蒙OS進行開發。根據智能汽車解決方案BU總裁王軍所說&#xff0c;這三大鴻蒙OS分別是——鴻蒙座艙操作系統HOS、智能駕駛操作系統AOS和智能車控操作系統VOS&…

只讀ViewObject和聲明性SQL模式

介紹 聲明式SQL模式被認為是基于實體的視圖對象的最有價值的優點之一。 在此模式下&#xff0c;根據UI中顯示的屬性在運行時生成VO的SQL。 例如&#xff0c;如果某個頁面包含一個只有兩列EmployeeId和FirstName的表&#xff0c;則查詢將生成為“從Employees中選擇Employee_ID&a…