题意:
给定一个整数n,输出x,y满足以下要求:
1. x+y=n
2. x的每一位上的数加在一起的数位和和y的数位和相差不超过1.
分析:
从高位开始依次遍历,将其平均分给x和y,奇数剩余的1由x和y轮流加上。
代码:
#include <bits/stdc++.h> #define endl '\n' using namespace std; typedef pair<int,int> pii; typedef long long ll; void solve() { int t; cin>>t; while(t--) { string s; cin>>s; ll x=0; ll y=0; int flag=0; for(int i=0;i<s.size();i++) { int res=s[i]-'0'; if(res%2==0) { x+=res/2; y+=res/2; } else { int tt=res/2; x+=tt; y+=tt; if(flag==0) { x++; flag=1; } else { y++; flag=0; } } if(i!=s.size()-1) { x*=10; y*=10; } } cout<<x<<' '<<y<<'\n'; } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); }
标签:typedef,int,Sum,Two,long,Numbers,ll From: https://www.cnblogs.com/yaowww/p/17356955.html