1058 A+B in Hogwarts

本文介绍了一个使用C++实现的金币加法器程序,该程序通过解析特定格式的字符串来提取金币的不同单位(加隆、西可、纳特),并执行加法运算。文章提供了一个完整的代码示例,展示了如何处理这些金币单位的进位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<bits/stdc++.h>
using namespace std;
struct Node{
	long long galleon;
	long long sickle;
	long long knut;
};
Node getnode(string s1){
	Node a;long long flag=0;long long t1,t2;
	for(long long i=0;i<s1.length();i++){
		if(s1[i]=='.'&&flag==0){
			t1=i;flag=1;
		}else if(s1[i]=='.'&&flag==1){
			t2=i;break;
		}
	}
	a.galleon=stoi(s1.substr(0,t1));
	a.sickle=stoi(s1.substr(t1+1,t2));
	a.knut=stoi(s1.substr(t2+1,s1.length()));
	return a;
}
int main()
{
	#ifdef ONLINE_JUDGE
	#else
	freopen("in.txt","r",stdin);
	#endif
	string s1,s2;
	cin>>s1>>s2;
	Node a=getnode(s1);
	Node b=getnode(s2);
	Node c;long long carry=0;
	if(a.knut+b.knut<29){
		c.knut=a.knut+b.knut;
	}else{
		c.knut=a.knut+b.knut-29;carry=1;
	}
	if(a.sickle+b.sickle+carry<17){
		c.sickle=a.sickle+b.sickle+carry;carry=0;
	}else{
		c.sickle=a.sickle+b.sickle+carry-17;carry=1;
	}
	c.galleon=a.galleon+b.galleon+carry;
	printf("%d.%d.%d",c.galleon,c.sickle,c.knut);
	return 0;
}

当我字符串做多了之后。。。看谁都能用字符串做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值