POJ1003 POJ1004 POJ1005 POJ1006 POJ1007
2013-03-28 21:08
260 查看
1003 | Hangover, 求可以挂几张卡片 |
#include<iostream> using namespace std; int main(){ float a = 1; int i; while( a!= 0.00) { cin>>a; float begin = 0; for(i = 1; begin <= a; i++){ begin += (float)1/(i+1); } if(a != 0.00) cout<<i - 1<<" card(s)"<<endl; } system("pause"); return 0; }
1004 | 给你12个float,求平均数。。无语。。 |
一个要记住的是cout的设定精度:
cout<<"$"<<fixed<<setprecision(2)<<(float)(sum/12)<<endl;
用setprecision(2)来设定精度,那个数字是结果有效数字的个数,如果只想要小数的话,就加上一个fixed。
#include<iostream> #include<fstream> #include<iomanip> using namespace std; int main(){ float sum = 0,dollor = 0; for(int i = 0; i < 12; i++){ cin>>dollor; sum += dollor; } cout<<"$"<<fixed<<setprecision(2)<<(float)(sum/12)<<endl; return 0; }
1005 | 从坐标轴中间,有一个椭圆,以每年50平方公里的速度增长面积,求任意一个点在什么时候进入椭圆内 |
就可以判定出来了。。。。
复习两个点: ceil()取上面的那个整数;
pi = acos(-1.0)
#include<iostream>
#include<fstream>
#include<iomanip>
#include<math.h>
using namespace std;
#define fin cin
#define fout cout
int main(){
// ifstream fin ("input.txt");
// ofstream fout ("output.txt");
double pi = acos(-1.0);
int n;
float a;
float b;
int year;
fin >> n;
for(int i = 1; i <= n; i++){
fin>>a;
fin>>b;
year = ceil((a * a + b * b) * pi / 100);
fout<<"Property "<<i<<": This property will begin eroding in year "<<year<<"."<<endl;
}
fout<<"END OF OUTPUT."<<endl;
return 0;
}
1006 | 三个不同周期的循环,开始点各不相同,找到他们下次重合的时候。 |
if((i + d - a) % 23 == 0 && (i + d - b) % 28 == 0 &&(i + d - c ) %33 == 0 )
应该是有更简单的算法的,
暂时还没有想到,我是从第一天开始遍历到最后一天的。。。
#includ
b565
e<iostream>
#include<fstream>
#include<iomanip>
#include<math.h>
using namespace std;
//#define fin cin
//#define fout cout
int main(){
ifstream fin ("input.txt");
ofstream fout ("output.txt");
int a,b,c,d;
int Case = 1;
fin>>a>>b>>c>>d;
while(a != -1){
for(int i = 1; i <= 21252; i++){
if( (i + d - a) % 23 == 0 && (i + d - b) % 28 == 0 &&(i + d - c ) % 33 == 0 ){
fout<<"Case "<<Case++<<": the next triple peak occurs in "<<i<<" days."<<endl;
break;
}
}
fin>>a>>b>>c>>d;
}
return 0;
}
1007 | 给定一些序列,并且定义了一种度量“乱序”程度的值,要求按乱序程度把原来的排序,输出 |
开始的时候用了string[50],结果说有runtime
error,我就给改成char *了,结果还是这样,我觉得string[]应该是没有问题的,比较确定,没有问题。
问题出在了设定范围上,之前设定的50,明显小了一个嘛(题目中是0
< m <= 50)这是有51个情况的,后来改成了100,就没有runtime
error了
#include<iostream> #include<fstream> #include<math.h> using namespace std; //#define fin cin //#define fout cout int unsort[100]; char *row[100]; int main(){ ifstream fin ("input.txt"); ofstream fout ("output.txt"); int len, num; int sum = 0; fin>>len>>num; for(int i = 0; i < num; i++) row[i] = (char*)malloc(sizeof(char) * len); for(int i = 0; i < num; i++){ fin>>row[i]; int numa = 0, numc = 0, numg = 0, numt = 0; for(int j = 0; j < len; j++){ if( row[i][j] == 'A' ) numa++; else if( row[i][j] == 'C') numc++; else if( row[i][j] == 'G') numg++; else if( row[i][j] == 'T') numt++; } for(int j = 0;j < len; j++){ if( row[i][j] == 'A' ) numa--; else if( row[i][j] == 'C' ){ numc--; sum += numa; } else if( row[i][j] == 'G' ){ numg--; sum = sum + numa + numc; } else if( row[i][j] == 'T' ){ numt--; sum = sum + numa + numc + numg; } } unsort[i] = sum; sum = 0; } int min = 999999; int marknum = 0; bool mark[100] = {0}; for(int l = 0; l < num; l++){ for(int k = 0; k < num; k++){ if(mark[k] == 0 && unsort[k] < min){ min = unsort[k]; marknum = k; } } mark[marknum] = 1; fout<<row[marknum]<<endl; min = 999999; } return 0; }
相关文章推荐
- POJ1003,POJ1004,POJ1005
- ACM学习-POJ-1003-Hangover
- POJ 1003 hangover
- POJ 1003--Hangover
- POJ 1003
- poj1003 java
- POJ1003 二分_查找/自定义zero()函数
- poj 1003Hangover
- POJ 1003 Hangover - 搜索算法 - 二分查找法
- 【POJ】1003 Hangover
- poj 1003 Hangover
- POJ1003-Hangover
- POJ 1003 Hangover
- POJ1003 Hangover
- poj 1003 叠板子
- HDU 1482/ZOJ 1184/FOJ 1003/POJ 1013 Counterfeit Dollar
- POJ1003 Hangover
- poj 1003 Hangover 二分查找不大于x的最大值
- [POJ_1003]Hangover
- POJ-1003