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);
		else
			ans = 150000 + 0.25 * (n - 1180000);
		printf("Case %d: %0.lf\n", i, ceil(ans));
	}
	return 0;
}

总结

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

相关推荐

  1. UVA12342 Tax Calculator 题解

    2024-07-14 10:40:01       24 阅读
  2. 洛谷P1234题解

    2024-07-14 10:40:01       32 阅读
  3. UVa489刽子手游戏题解

    2024-07-14 10:40:01       63 阅读
  4. UVA1449 Dominating Patterns 题解

    2024-07-14 10:40:01       52 阅读
  5. UVa1339古老的密码题解

    2024-07-14 10:40:01       49 阅读
  6. UVA10678 The Grazing Cow 题解a

    2024-07-14 10:40:01       45 阅读
  7. 串口1234

    2024-07-14 10:40:01       34 阅读
  8. UVA-213

    2024-07-14 10:40:01       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 10:40:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 10:40:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 10:40:01       58 阅读
  4. Python语言-面向对象

    2024-07-14 10:40:01       69 阅读

热门阅读

  1. Font Awesome 图表图标

    2024-07-14 10:40:01       27 阅读
  2. c++课后作业

    2024-07-14 10:40:01       24 阅读
  3. k8s开启deopos功能报错总结

    2024-07-14 10:40:01       25 阅读
  4. 【机器学习】ChatGLM2-6B 分词器 Tokenizer 的使用

    2024-07-14 10:40:01       35 阅读
  5. PHP文字ocr识别接口示例、人工智能的发展

    2024-07-14 10:40:01       23 阅读
  6. 等保测评是做什么的

    2024-07-14 10:40:01       20 阅读
  7. Ubuntu 22.04.4 LTS (linux) 使用shc 加密 shell script

    2024-07-14 10:40:01       22 阅读
  8. 流程循环控制语句

    2024-07-14 10:40:01       24 阅读