[PAT]甲级 1001 A+B Format

问题大意:计算a+b,并以一定格式输出。格式是每三位以逗号分开,除非不足四位直接输出。a和b都是大于等于-1000000小于等于1000000。

思路:从a,b范围看来用int完全可以满足计算要求,由于我个人在可以不用字符的情况下就不用字符的懒惰,所以一开始就是奔着只用int去的。将结果抛去正负之分,可以分为三类:一,小于1000,即可以直接输出;二大于等于1000000,即有两个逗号;三在1000和999999之间的,即只有一个逗号。测试时可以挑三类中间的数字。为减少重复计算(其实也没有重复哪去,)我将结果sum分为两部分高三/四位left和低三位right。

代码(c++):

#include<iostream>
using namespace std;
int main() {
 int a, b;
 cin >> a >> b;
 int sum;
 sum = a + b;
 int left;//高3/4位
 int right;//低三位
 if (sum < 0) {
  cout << "-";
  sum = (-1) * sum;
 }
 left = sum / 1000;
 right = sum % 1000;
 if (sum<1000) {//sum小于1000,直接输出
  printf("%d\n", sum);
 }
 else if(sum >=1000000){
  printf("%d,%03d,%03d\n", left / 1000, left % 1000, right);
 }
 else {
  printf("%d,%03d\n", left, right);
 }
 
 return 0;
}

结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值