首页 > 其他分享 >P1625求和 题解

P1625求和 题解

时间:2024-11-11 22:57:17浏览次数:1  
标签:10 求和 题解 ll -- P1625 x2 x1 大括号

P1625 求和 题解

题意

求和

题解

比较好想,小学一年级奥数

可以理解为高精度的大杂烩

代码很简洁,可自行理解

#include<bits/stdc++.h> //万能头 
#define ll long long // 开long long	 
using namespace std;// 命名空间 
ll n,m,a[2005],b[2005],c[4000005];  //a[0],b[0],c[0]分别表示数的长度 
 // 注意a,b,c均是从个位存起!!!!!!!!!!!!! 
void tms(ll a[],ll x){ //单精度乘法 
	for(ll i=1;i<=a[0];i++)a[i]*=x; //每一位先乘一下 
	for(ll i=1;i<=a[0];i++){ //从个位开始遍历 
		a[i+1]+=a[i]/10; //进位 
		a[i]%=10; // 保留个位 
	} //右大括号 
	while(a[a[0]+1]>0){ //进位如果超过数的长度,长度++ 
		a[0]++; // 长度++ 
		a[a[0]+1]+=a[a[0]]/10; // 进位 
		a[a[0]]%=10; //保留个位 
	} //右大括号 
} //右大括号 
void dvs(ll a[],ll x){ //单精度除法 
	ll tmp=0; //有点像长除法 
	for(ll i=a[0];i>=1;i--){ // 从最高位开始遍历 
		tmp=tmp*10+a[i];  // 加上 
		a[i]=tmp/x; // 除一下,PS:这里可以这么操作如果tmp<x那么a[i]=0 
		tmp%=x; //摸一下 
	} //右大括号 
	while(a[a[0]]==0&&a[0]>0)a[0]--; //长度-- 
} //右大括号 
int main(){ //主函数 
	ios::sync_with_stdio(0); //ios提快 
	cin.tie(nullptr); //ios提快 
	cout.tie(nullptr);  //ios提快 
	cin>>n>>m; // 输入 
	a[0]=a[1]=b[0]=b[1]=c[0]=c[1]=1; //初始化,长度为1,初始数值为1(方便乘) 
	for(ll i=2;i<m;i++)tms(a,i),tms(c,i); //  列项 
	for(ll i=n+1;i<n+m;i++)tms(b,i),tms(c,i);//  列项 
	tms(c,m-1);//  列项 
	//c存的是a*b 
	for(ll i=1;i<=b[0];i++){ //b-=a 高精减 
		b[i]-=a[i]; //减一下 
		if(b[i]<0){ //小于零退位 
			b[i]+=10; //小于零退位 
			b[i+1]--; //小于零退位 
		} //右大括号 
	} //右大括号 
	while(b[0]>0&&b[0]==0)b[0]--; // 退位 
	for(ll j=2;j<n+m;j++){ // 遍历用来约分的数 
		ll x1=0,x2=0; //存模数的 
		for(ll i=b[0];i>=1;i--)x1=(x1*10+b[i])%j; //摸摸 
		for(ll i=c[0];i>=1;i--)x2=(x2*10+c[i])%j; //摸摸 
		while(x1==0&&x2==0){ //如果同时是b-a,c的因数 while!!!!
			dvs(b,j); //除一下 
			dvs(c,j); //除一下 
			for(ll i=b[0];i>=1;i--)x1=(x1*10+b[i])%j; //摸摸 
			for(ll i=c[0];i>=1;i--)x2=(x2*10+c[i])%j; //摸摸 
		} //右大括号 
	} //右大括号 
	for(ll i=b[0];i>=1;i--)cout<<b[i]; //记得倒序输出 
	cout<<"\n"; //换行 
	for(ll i=c[0];i>=1;i--)cout<<c[i]; //记得倒序输出 
	return 0; //好习惯 
} //右大括号

求关注QWQ

标签:10,求和,题解,ll,--,P1625,x2,x1,大括号
From: https://www.cnblogs.com/rsy2012/p/18540771

相关文章

  • 牛客周赛Round 67 个人题解(A~F)
    牛客周赛Round67个人题解(A~F)牛客周赛Round67A-排序危机题目分析相对位置不会改变,用三个·字符串模拟即可#include<bits/stdc++.h>#defineendl'\n'usingnamespacestd;voidsolve(){ intn;cin>>n; strings;cin>>s; s=""+s; strings1,s2,s3; for(i......
  • CSP-J2024 复赛T1(洛谷P11227)题解
    前传作者初赛没过。坐标sd,79分过不了已经适应了。话说这次泄题事件闹得沸沸扬扬,都说各省分数线要降,最后sd降了8分,80。挺逆天的,感觉sd再这样下去一点OIer都要没了。思路桶排思想,用二维数组模拟一整副牌,本来做的时候是怕有重复牌才这样做,事实上不会。ACCode#include<bits/......
  • 《【NOIP2000 基础】计算器的改良》 不全对题解
    温馨提示,本题难度略大,本人写不出来正确代码,文章代码并不对,只是提供一些思路,希望大家能谅解!目录题目描述输入描述输出描述解析完整代码描述NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一......
  • 洛谷题单103数组题解||by红糖
    P1428小鱼比可爱题目描述人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样......
  • [题解](更新中)Refact.ai Match 1 (Codeforces Round 985)
    A-Set显然答案是\(\max(\lfloor\frac{r}{k}\rfloor-l+1,0)\)。点击查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intt,l,r,k;signedmain(){ cin>>t; while(t--){ cin>>l>>r>>k; cout<<max(0ll,......
  • 题解:P11262 [COTS 2018] 题日 Zapatak
    https://www.luogu.com.cn/article/i7ajvm8e哈希好题。题意给定一个序列,每次询问给定两个长度相等的区间,问这两个区间是否只有一个数不一样。思路发现我们要求的信息只与数的出现次数有关,自然想到桶。那么如果有两个区间合法,那这两个区间的桶只有两个位置不同且桶内的值均相......
  • P8162 [JOI 2022 Final] 让我们赢得选举 (Let's Win the Election) 题解
    P8162[JOI2022Final]让我们赢得选举(Let'sWintheElection)题解朴素的想法是先抓一部分人,再一起去发表演讲。这样就要按\(b\)的值从小到大排序,枚举选择的一部分\(b\)值,在后面挑选一些最小的\(a\)选择即可。但这样显然是错误的。观察到\(n\le500\),显然是\(O(n^3......
  • 题解:P11062 【MX-X4-T2】「Jason-1」加法
    一道简单的分讨。思路可分成两种情况。当\(a\)和\(b\)同号时:这种情况,显而易见的是\(|a-b|\)的最小值必定是\(|a|,|b|,|a-b|\)之一。当\(a\)和\(b\)异号时:对\((a,b)\)执行欧几里得算法可以将一个变为\(0\),另一个变为\(\gcd(a,b)\)(忽略正负号)。再将\(0\)变......
  • 题解:P10967 [IOI2000] 邮局(原始版)
    思路首先将坐标排序。定义\(dp_{i,j}\)为前\(i\)个村庄放\(j\)个邮局的前\(i\)个村庄的最小距离总和,\(f(i,j)\)表示村庄区间\([i,j]\)内放一个村庄时该区间的总和。转化式易得\(dp_{i}{j}=dp_{k}{j-1}+f(k+1,i),k\in[0,i)\)。则本题的难点就为求\(f(k-1,i)\)。......
  • 题解:UVA1362 Exploring Pyramids
    思路:显然的,若不是叶子结点都应该至少遍历两次。于是两个相同访问之间就可能是一颗子树。更加具体的,如同\(s_l,\dots,s_k,\dots,s_r\),使得\(s_l=s_k\),那么就可以认为\(s[l,k]\)是\(s[l,r]\)的一颗子树,设区间\(s[l,r]\)的结构数量为\(f_{l,r}\),那么根据乘法原理,当把\(......