问题标题: 酷町堂:4863

0
0
已解决
胡景波
胡景波
中级光能
中级光能

4863   完全立方数经验值:0

题目描述 Description

求1~m内的完全立方数。
完全立方数为:该数可以分解成一个数的立方形式,
比如8可以分解成2的立方,27可以分解成3的立方,则8和27都是完全立方数。

输入描述 Input Description

第一行,一个数n,表示接下来有n组测试数据
第2行–第n+1行,每行1个数,m,求1–m范围内的立方数有哪些

输出描述 Output Description

输出n组数据
每组数据2行,第一行为满足范围内的数,空格隔开
第二行为满足条件数的个数

样例输入 Sample Input

2 1 30

样例输出 Sample Output

1 1 1 8 27 3

数据范围及提示 Data Size & Hint

n<=100,m<=10000

个个

Time Limit Exceeded

#include<iostream>
using namespace std;
int n,a,sum;
bool t(int x){
    for(int i=1;i<=x;i++){
        if(i*i*i==x){
            return true;
        }
    }
    return false;
}
void k(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a;
        for(int i=1;i<=a;i++){
            if(t(i)){
                sum++;
                cout<<i<<" ";
            }
        }
        cout<<endl;
        cout<<sum<<endl;
        sum=0;
    }
}
int main(){
    k();
    return 0;
}


0
已采纳
邓涵睿
邓涵睿
中级天翼
中级天翼

可以不用函数的孩子

首先你要有个计数器,然后输入数组,接着判断j*j*j<=a[i],是就输出j*j*j和空格,然后计数器++,不是就直接break。

然后输出cout<<"\n"<<cnt<<"\n";

循环这样写:

for(int i=1;i<=n;i++){

    for(int j=1;j<=sqrt(a[i]);j++){

      ...........

  }

}

输出是在循环外部输出的,省略号里写我讲的思路,别忘了先要输入数组~

望采纳~(打字不易)

0
我要回答