acm编程题:hdu1012,hdu1017

//1012
/*思路:题目的意思就是将正整数(0~9)求阶乘倒数的和,需要设置一个函数用来求阶乘,在main函数中,0~9循环一次,调用阶乘函数求倒数并累加作为和,求出相应的e并输出*/
#include<iostream>
#include<iomanip>
using namespace std;
//求n的阶乘的函数
int func(int n)
{
if (n==0||n==1)
{
return 1;
}
return n * func(n - 1);
}
int main()
{
int n, e;
int i;
double arr[10], sum = 0;//sum是和
cout << ‘n‘ << ‘ ‘ << ‘e‘ << endl;
cout << ‘-‘ << ‘ ‘ << "-----------"<< endl;
for ( i = 0; i <= 9; i++)
{
arr[i] = 1.0 / func(i);
sum += arr[i];
//setprecision是一个计算机函数,功能是控制输出流显示浮点数的有效数字个数[1] ,如果和fixed合用的话,可以控制小数点后面有几位。
if (i==0||i==1)
{
cout << i << ‘ ‘<<fixed << setprecision(0)<<sum << endl;
}
else if (i == 2)
{
cout << i << ‘ ‘<<fixed << setprecision(1) << sum << endl;
}
else
{
cout << i << ‘ ‘ <<fixed<< setprecision(9)<<sum << endl;
}
}
return 0;
}

//1017
//思路:遍历小于n的整数,用二重循环,i和j(分别代表题目中的a和b),看 (a^2+b^2 +m)/(ab) is an integer,可以看前者(a^2+b^2 +m)和后者(ab)的取模是否为0或者商乘以后者(ab)判断其是否等于前者(a^2+b^2 +m)
#include<iostream>
using namespace std;
int main()
{
int n, m;
int i, j;
int temp;
int count1 = 0;//用于记录case个数
int count2 = 0;//用于记录pairs
int t;
while (cin >> t)
{
while (t--)
{
while (cin>>n>>m)
{
if (n==0&&m==0)
{
break;
}
count1++;
temp = 0;
count2++;
for (i = 0; i < n-1; i++)
{
for ( j = i+1; j < n; j++)
{
temp = (i*i + j*j + m);
//解一:看是否能够整除,可以看求余数是不是等于0
//解二:求出他们的商,并看乘以除数,看是否等于被除数
/* int x = i*i+j*j+m;
int y = i*j;
int temp = x/y;
if(temp*y==x)num++; */
if (temp%(i*j)==0)
{
count2++;
}
}
}
cout << "Case " << count1 << ":" << count2 << endl;
}
}
}
return 0;
}

参考博客:http://blog.csdn.net/runner__1/article/details/50193057,http://blog.csdn.net/qq_26919527/article/details/49007943

原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/8528508.html

时间: 2024-10-01 07:30:06

acm编程题:hdu1012,hdu1017的相关文章

ACM编程题之矩阵翻转

题目: 晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的. 于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分. 输入第一行包括由空格分开的整数M.N.T(0<M<200,0<N<200,T=0或1), 其中M和N分别表示待处理矩阵的行数与列数,T为0时表示左右翻转,为1时表示上下翻转. 之后的M行,每行包括由空格分隔的N个整数,依次为输入矩阵的每一行的数据. 输出包括M行N列,每个数字之间用一个空格分隔,表示的是按照要求翻转后的矩阵. 样例输

acm编程题:hdu1018,hdu1019

//1018//思路:求这个阶乘结果的位数,因为是阶乘结果(乘积)取对数,就相当于对每个对数求和/* 123456=1.23456*10^5;log10(123456) = 5.09151;log10(1.23456 * 10 ^ 5) = log10(1.23456) + log10(10 ^ 5) = 0.09151 + 5;故int(log10(n)) + 1 就是n的位数*/#include<iostream>#include<cmath>using namespace s

acm编程题:hdu1021 ,hdu1022,hdu1023

//1021//思路:求出各个fn,再挨个判断其是否能被3整除.#include<iostream>using namespace std;#define N 1000000int f[N];int main(){ int n; int i; f[0] = 1;//%3的结果 f[1] = 2;//也是%3的结果 //注意:如果不直接先%3的话,提交以后就会wrong answer for ( i = 2; i < N; i++) { f[i] = (f[i - 1] + f[i - 2

ACM大赛题 【C++大数相乘】

题     目: 大数相乘,我们常常会遇见几百位长的数字之间相乘的编程题,例如在算法中,ACM大赛题中,下面就是大数相乘的详细过程. 思      路: 模拟相乘法 举例说明: 123*789=97047 原理展示: 计算机计算: . C++源代码: 结果展示:

蘑菇街2016研发工程师在线编程题

传送门 第一题: [编程题] 搬圆桌 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000) 输出描述: 输出一个整数,表示答案 输入例子: 2 0 0 0 4 输出例子: 1 题解转自:ixiaomo 思路很简单,千万别想复杂了 无论圆桌如何移动,都必须在圆

Airbnb coding面的一道编程题

之前在直播的时候Airbnb负责人说他们的coding题难度不会到dp,我就知道肯定是一些字符串处理啥的编程题了. 果然,Airbnb的coding面是在codePad上手写代码,面试官希望能看到你书写的过程,所以少用本地ide(呵呵,不调试让写编程题是最XX的,所以有些东西你需要及时沟通) 自己给的三四个test case,要求输出对应的结果就行了(比ACM是相当宽松了). 题目是这样的,很简单: 有这样的文本(我转js的字符串了) let str1 = 'rwer321,dad,adas,y

POJ C程序设计进阶 编程题#3:运算符判定

编程题#3:运算符判定 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 两个整数 a 和 b 运算后得到结果 c.表示为:a ? b = c,其中,?可能是加法 +,减法 -,乘法 *,整除 / 或 取余 %.请根据输入的 a,b,c 的值,确定运算符.如果某种运算成立,则输出相应的运算符,如果任何运算都不成立,则输出 error. 例如: 输入: 3,4,5 输出: er

中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机

期末考试编程题 返回 这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成绩. 1 细胞自动机(30分) 题目内容: 这是细胞自动机的非图形版本.细胞自动机是指在一个二维网格内,每一个网格是一个细胞.每个细胞有活和死两种状态. 初始时刻,有些细胞是活的,有些细胞是死的.自动机的每一步,根据每个细胞周围8个格子内的其他细胞的生存情况决定这个细胞下一步是否存活.具体的规则如下:

ACM 刷题小技巧【转】

转载自URl-team ACM做题过程中的一些小技巧. 1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 大数据输入输出时最好不要用cin.cout,防止超时. 2.有时候int型不够用,可以用long long或__int64型(两个下划线__). 值类型表示值介于 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之间的整数.