当前位置: 首页 > news >正文

UVA12342 Tax Calculator 题解

题目传送门

题目大意

题目描述

某国所得税计算十分复杂。该国政府指定你制作一个自动计算所得税的程序。以下是该国计算所得税的规则:

  1. 所得税免征额为 180000 180000 180000 元。
  2. 应纳税额中不超过 300000 300000 300000 元的所得额,按 10 % 10\% 10% 的税率缴纳所得税。
  3. 余下应纳税额中不超过 400000 400000 400000 元的所得额,按 15 % 15\% 15% 的税率缴纳所得税。
  4. 余下应纳税额中不超过 300000 300000 300000 元的所得额,按 20 % 20\% 20% 的税率缴纳所得税。
  5. 余下应纳税额按 25 % 25\% 25% 的税率缴纳所得税。
  6. 需要缴纳所得税少于 2000 2000 2000 元(不含 0 0 0 元)的,缴纳所得税 2000 2000 2000 元。
  7. 需要缴纳所得税为小数的,向上取整所得税。
输入格式

输入共 ( T + 1 ) (T+1) (T+1) 行。

第一行,一个整数 T T T,表示需要计算所得税的人的数量。

接下来 T T T 行,每行一个整数 k k k,表示第 i i i 个人的税前收入。

输出格式

输出共 T T T 行。

每行按照 Case i: tax 的格式输出所得税。

样例解释 #1

在输入输出样例 #1 中的第 3 3 3 个示例中:

金额税率税收
180000 180000 180000 0 % 0\% 0% 0 0 0
300000 300000 300000 10 % 10\% 10% 30000 30000 30000
135000 135000 135000 15 % 15\% 15% 20250 20250 20250
总计 50250 50250 50250
数据范围

对于 100 % 100\% 100% 的数据, T ≤ 5000 T\leq 5000 T5000 1 ≤ k ≤ 1 0 9 1\leq k\leq 10^{9} 1k109

解题思路

我们设 n i n_i ni 为第 i i i 个人的税前收入。

由题意可知:

  1. n i ≤ 1.8 × 1 0 5 n_i\le1.8\times10^5 ni1.8×105 时,第 i i i 个人应缴纳 0 0 0
  2. 1.8 × 1 0 5 < n i ≤ 2 × 1 0 5 1.8\times10^5<n_i\le2\times10^5 1.8×105<ni2×105 时,第 i i i 个人应缴纳 2000 2000 2000
  3. 2 × 1 0 5 < n i ≤ 4.8 × 1 0 5 2\times10^5<n_i\le4.8\times10^5 2×105<ni4.8×105 时,第 i i i 个人应缴纳 0.1 × ( n i − 180000 ) 0.1\times(n_i-180000) 0.1×(ni180000)
  4. 4.8 × 1 0 5 < n i ≤ 8.8 × 1 0 5 4.8\times10^5<n_i\le8.8\times10^5 4.8×105<ni8.8×105 时,第 i i i 个人应缴纳 30000 + 0.15 × ( n i − 480000 ) 30000+0.15\times(n_i-480000) 30000+0.15×(ni480000)
  5. 8.8 × 1 0 5 < n i ≤ 1.18 × 1 0 6 8.8\times10^5<n_i\le1.18\times10^6 8.8×105<ni1.18×106 时,第 i i i 个人应缴纳 90000 + 0.2 × ( n i − 880000 ) 90000+0.2\times(n_i-880000) 90000+0.2×(ni880000)
  6. n i > 1.18 × 1 0 6 n_i>1.18\times10^6 ni>1.18×106 时,第 i i i 个人应缴纳 150000 + 0.25 × ( n i − 1180000 ) 150000+0.25\times(n_i-1180000) 150000+0.25×(ni1180000)

然后,我们就可以模拟此过程。

CODE:

#include <stdio.h>
#include <math.h>
int main() {short t;scanf("%hd", &t);for (int i = 1; i <= t; i++) {int n;double ans = 0;scanf("%d", &n);if (n <= 180000)ans = 0;else if (n <= 200000)ans = 2000;else if (n <= 480000)ans = 0.1 * (n - 180000);else if (n <= 880000)ans = 30000 + 0.15 * (n - 480000);else if (n <= 1180000)ans = 90000 + 0.2 * (n - 880000);elseans = 150000 + 0.25 * (n - 1180000);printf("Case %d: %0.lf\n", i, ceil(ans));}return 0;
}

总结

这题非常简单,按题意模拟即可。

http://www.lryc.cn/news/394902.html

相关文章:

  • WebKit中Websockets的全面支持:实现高效实时通信
  • 微信小程序的智慧物流平台-计算机毕业设计源码49796
  • 旅游 | 西岳华山
  • 如何优化Java中的内存占用?
  • 2024这三家上海闵行装修公司,值得一看
  • K8S学习教程(三):在PetaExpress KubeSphere 容器部署 Wiki 系统 wiki.js 并启用中文全文检索
  • 服务器该如何抵御CC攻击
  • 关于centos7自带的nginx1.20.1开启https后,XP系统的IE6和IE8无法显示网页的问题
  • Zotero软件翻译插件Translate for Zotero的API接入方法--百度垂直领域翻译
  • python实现接口自动化
  • 如何提问 如何回答
  • 计算机图形学入门26:高级光线传播
  • STM32蓝牙HID实战:打造低功耗、高性能的客制化键盘
  • C++ STL容器:序列式容器-队queue,deque
  • 简谈设计模式之单例模式
  • 在Spring Boot中实现多线程任务调度
  • dify/api/models/account.py文件中的数据表
  • SQLAlchemy迁移数据库
  • Django文档简化版——Django快速入门——创建一个基本的投票应用程序
  • 安全防御第三天(笔记持续更新)
  • 【12321骚扰电话举报受理中心-短信验证安全分析报告】
  • 杂项——循迹模块调节方法
  • 揭秘:源代码防泄密的终极秘籍
  • avcodec_send_packet函数阻塞
  • 一个parquet-go例子
  • 扩散模型笔记
  • 上海-LM科技(面经)
  • 用 Echarts 画折线图
  • C++的map / multimap容器
  • 双向链表 -- 详细理解和实现