高精度模板
放几个高一上写的模板,高精除法什么的好像并没有什么用,写过板后就没用过了。
//Twenty
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int maxn=200000+100;
const int maxm=400000+100;
int m,n,x,y,q,flag;
int vis[maxn];
int read(){
int n=0;char c=getchar();
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')n=n*10+c-'0',c=getchar();
return n;
}
int nxt[maxm],fir[maxn],to[maxm],ncnt;
void add_(int u,int v){
nxt[++ncnt]=fir[u];fir[u]=ncnt;to[ncnt]=v;
nxt[++ncnt]=fir[v];fir[v]=ncnt;to[ncnt]=u;
}
void dfs(int u){
for(int i=fir[u];i;i=nxt[i]){
int v=to[i];
if(vis[v]) continue;
for(int j=fir[v];j;j=nxt[j]){
if(vis[to[j]]) continue;
vis[to[j]]=1;dfs(to[j]);
}
}
return;
}
int main()
{
n=read();m=read();
for(int i=1;i<=m;i++){
int u,v;
u=read();v=read();
if(u==v)flag=1;
else add_(u,v);
}
vis[1]=1;
if(!flag) dfs(1);
q=read();
while(q--){
x=read();y=read();
if(x==y||flag){
printf("Yes\n");
continue;
}
else{
if(vis[x]==vis[y]) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}
//Twenty
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int a[505],b,c[505];
char s[505];
int main()
{
cin>>s;
cin>>b;
a[0]=strlen(s);
for(int i=0;i<a[0];i++)
a[i+1]=s[i]-'0';
c[0]=a[0];
int x=0;
for(int i=1;i<=a[0];i++)
{
c[i]=(x*10+a[i])/b;
x=(x*10+a[i])%b;
}
int l=1;
while(l<c[0]&&c[l]==0)
l++;
for(int i=l;i<=c[0];i++)
cout<<c[i];
}
//Twenty
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int a[505],b[505],c[505];
void read(int a[]) {
char ch[505];
int cd;
cin>>ch;
a[0]=strlen(ch);
for(int i=0;i<a[0];i++)
{
a[i+1]=ch[a[0]-i-1]-'0';
}
}
int compare(int a[],int b[]) {
if(a[0]>b[0])return 1;
if(a[0]<b[0])return -1;
for(int i=a[0];i>=1;i--)
{
if(a[i]>b[i])return 1;
if(a[i]<b[i])return -1;
}
return 0;
}
void numcpy(int q[],int p[],int i) {//把p粘到q的第i位
q[0]=p[0]+i-1;
for(int j=1;j<=p[0];j++)
{
q[j+i-1]=p[j];
}
return ;
}
void jian(int a[],int b[]) {
int flag=compare(a,b);
if(flag==0) a[0]=0;
else
{
for(int i=1;i<=a[0];i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]+=10;
}
a[i]=a[i]-b[i];
}
while(a[0]>0&&a[a[0]]==0)a[0]--;
}
return;
}
void jisuan() {
c[0]=a[0]-b[0]+1;
int smg[505];
for(int i=c[0];i>=1;i--)
{
memset(smg,0,sizeof(smg));
numcpy(smg,b,i);
while(compare(a,smg)>=0){c[i]++;jian(a,smg);}
}
while(c[0]!=0&&c[c[0]]==0)c[0]--;
}
void print(int c[]) {
if(c[0]==0)cout<<"0"<<endl;
else{
for(int i=c[0];i>=1;i--)
cout<<c[i];
cout<<endl;}
}
int main()
{
read(a);
read(b);
jisuan();
print(a);
return 0;
}