【ACM之旅】选择计算
来源:互联网 发布:织梦dir安装教程 编辑:程序博客网 时间:2024/06/08 07:00
一、[题目] 选择计算
时间限制:1.0s 内存限制:512.0MB
问题描述
输入三个整数x,y,z。
根据z的值的不同对x和y进行计算:
z=1:输出x+y的值;
z=2:输出x-y的值;
z=3:输出x*y的值;
z=4:输出x/y的值(若除不尽取整数部分);
z=5:输出x%y的值
z=6:输出x和y的最大公约数
z=7:输出x和y的最小公倍数
输入格式
只有一行,包括三个整数,x,y,z,其中2<=x,y<=200,1<=z<=7,相邻的两个数之间用空格符隔开。
输出格式
只有一个数,表示计算后的值。
样例输入
100 80 6
样例输出
20
二、[代码]:
PS. 选择计算 是一道数学计算类题目,起涉及了基本的各种数学运算,其中较难的为除法计算、求最大公约数和最小公倍数,除法计算的关键在于判断是否除的尽,其实我们可以利用“先除再乘”来判断是否除的尽(利用除不尽输出为近似数的特点),而关于最大公约数和最小公倍数我们要把握其关系,即“最小公倍数 = 两数乘积 / 最大公约数”,而最大公约数我们利用“辗转相除法”即可得到,以下列出我的解法。
算法一: 递推函数法
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int a, b, r, x, y, z; scanf("%d %d %d", &x, &y, &z); // 读入数据x,y以及计算类型z switch(z){ // 根据选择计算类型分支 case 1:{ //加法 printf("%d", x+y); break; } case 2:{ //减法 printf("%d", x-y); break; } case 3:{ //乘法 printf("%d", x*y); break; } case 4:{ //除法(判断除尽与否关键在于"先除再乘") char s[30]; sprintf(s,"%.10lf", x*1.0/y); //先求出其相除后的结果保存到数组中 double r = atof(s)*y; //再乘回去得到除数 if(x == r) { //判断先除再乘后的结果是否等于原除数, 相等则除尽 int i = strlen(s); while(--i&&s[i]=='0') s[i] = 0; //将结果末尾多余的零去除 printf("%s", s); //输出相除结果 }else printf("%d",x/y); //除不尽责取整 break; } case 5:{ //求余 printf("%d", x%y); break; } default:{ //最大公约数与最小公倍数 a = x; b = y; while(b!=0){ //辗转相除法 r = a % b; a = b; b = r; } printf("%d", z<7?a:(x*y)/a); //根据z进行输出 } } return 0;}
欢迎评论和转载,转载请注明文章出处,我对此表示最真诚的敬意!
0 0
- 【ACM之旅】选择计算
- 【ACM之旅】计算价格
- ACM之车位选择
- ACM之计算时间
- ACM经典算法之计算几何
- 云计算之路:为什么要选择云计算
- 杭州电子科技大学(HDU)ACM刷题---------选择排序之2020
- ACM知识点 之 贪心(2)选择不相交区间
- ACM之旅
- ACM之旅
- ACM之旅起航
- ACM-计算几何之The area——hdu1071
- ACM-计算几何之Toys——poj2318
- ACM-计算几何之Toy Storage——poj2398
- ACM-计算几何之Pick-up sticks——poj2653
- ACM-计算几何之Segments——poj3304
- ACM-计算几何之Intersecting Lines——poj1269
- ACM-计算几何之围困——hrbustoj1142
- 关系型数据库优化总结
- OSG中的示例程序简介
- 验证花括号的匹配
- HDU 1048 The Hardest Problem Ever
- 在 OpenStack 中启用 Keystone LDAP 后端
- 【ACM之旅】选择计算
- windows下使用pm2
- vtk filter 的写法
- DFS所用到的奇偶剪枝
- poj1083 思维题
- [Leetcode] 14. Longest Common Prefix
- 实用数据结构---图的操作和算法
- C++ pthread cond_wait 和 cond_broadcast的使用
- matlab数组中求最大的几个数并返回其位置