首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ACM 1136求大侠帮忙看看小弟我的题如何不对

2012-02-15 
ACM 1136求大侠帮忙看看我的题怎么不对Anumberwhoseonlyprimefactorsare2,3,5or7iscalledahumblenumber.Th

ACM 1136求大侠帮忙看看我的题怎么不对
A   number   whose   only   prime   factors   are   2,3,5   or   7   is   called   a   humble   number.   The   sequence   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,   12,   14,   15,   16,   18,   20,   21,   24,   25,   27,   ...   shows   the   first   20   humble   numbers.  
Write   a   program   to   find   and   print   the   nth   element   in   this   sequence.  

Input   Specification
The   input   consists   of   one   or   more   test   cases.   Each   test   case   consists   of   one   integer   n   with   1   ≤   n   ≤   5842.   Input   is   terminated   by   a   value   of   zero   (0)   for   n.  
Output   Specification
For   each   test   case,   print   one   line   saying   "The   nth   humble   number   is   number. ".   Depending   on   the   value   of   n,   the   correct   suffix   "st ",   "nd ",   "rd ",   or   "th "   for   the   ordinal   number   nth   has   to   be   used   like   it   is   shown   in   the   sample   output.  
Sample   Input
1
2
3
4
11
12
13
21
22
23
100
1000
5842
0

Sample   Output
The   1st   humble   number   is   1.
The   2nd   humble   number   is   2.
The   3rd   humble   number   is   3.
The   4th   humble   number   is   4.
The   11th   humble   number   is   12.
The   12th   humble   number   is   14.
The   13th   humble   number   is   15.
The   21st   humble   number   is   28.
The   22nd   humble   number   is   30.
The   23rd   humble   number   is   32.
The   100th   humble   number   is   450.
The   1000th   humble   number   is   385875.
The   5842nd   humble   number   is   2000000000.


题目是这个
我的代码
说什么就是不对
救命啊
#include <iostream>
using   namespace   std;
bool   isPrimeFactor(long   int   temp)
{
if(temp%2==0||temp%3==0||temp%5==0||temp%7==0)
return   1;
else
return   0;
}
int   main()
{
long   int   sequence[5843],temp;
int   a=1;
sequence[0]=1;
for(temp=2;temp <=2000000000;temp++)
if(isPrimeFactor(temp)==1){
sequence[a]=temp;
a++;
}
cin> > temp;
if(temp==0)
return   1;
cout < < "The   temp ";
if(temp%10==1)
cout < < "st   ";
else   if(temp%10==2)
cout < < "nd   ";
else   if(temp%10==3)
cout < < "rd   ";
else
cout < < "th   ";
cout < < "humble   number   is   " < <sequence[a-1] < < ", " < <endl;


return   0;
}



[解决办法]
另外还有一种简单的方法的代码:
#include <iostream.h>
#include <fstream.h>

long humble[5850]={0};

long min(long a, long b, long c, long d)
{
long m;
if(a> b)m=b;
else m=a;
if(c <m)m=c;
if(d <m)m=d;
return m;
}

int main()
{
humble[0]=1;
int p2,p3,p5,p7,i;
//ofstream out( "out.txt ");
p2=p3=p5=p7=i=0;
while(humble[i] <2000000000){
humble[++i]=min(humble[p2]*2, humble[p3]*3, humble[p5]*5, humble[p7]*7);
if(humble[p2]*2==humble[i])p2++;
if(humble[p3]*3==humble[i])p3++;
if(humble[p5]*5==humble[i])p5++;
if(humble[p7]*7==humble[i])p7++;
}
int no;
while(cin> > no, no> 0){
if(no%10==1 && no%100!=11)
cout < < "The " < < no < < "st " < < "humble number is ";
else if(no%10==2 && no%100!=12)
cout < < "The " < < no < < "nd " < < "humble number is ";
else if(no%10==3 && no%100!=13)
cout < < "The " < < no < < "rd " < < "humble number is ";
else
cout < < "The " < <no < < "th " < < "humble number is ";
cout < < humble[no-1] < < ". " < <endl;
}
return 0;
}


热点排行