栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

pow( ) & to

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pow( ) & to

问题来源:PTA 拓展水仙花数题目中使用了pow&to_string函数后超时

具体题目:

扩展水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次方之和等于它本身。例 如:153 =13+ 53+ 33。 要求编写程序,输出所有扩展水仙花数。

输入格式:

首先输入一个整数T(1<=T<10),表示测试组数;每组测试在一行上输入一个正整数N(3<=N<=7)。

输出格式:

对于每组测试,按递增顺序输出所有扩展水仙花数,每个数字占一行。

输入样例:
1
3

输出样例:
153
370
371
407
 错误代码呈现
#include 
using namespace std;

int main()
{
    int t, n;
    cin >> t;
    int sum = 0;
    while (t--)
    {
        cin >> n;
        for (int i = pow(10, n - 1); i < pow(10, n); i++)
        {
            string s = to_string(i);    //讲数字转换成字符串
            for (int j = 0; j < s.size(); j++)
            {
                int k = s[j] - 48;
                int tmp = pow(k,n);
                sum += tmp;
            }
            if (sum == i)
                cout << i << endl;
            sum = 0;
        }
    }
    return 0;
}
AC Code:
#include 
using namespace std;

//自定义一个函数 实现pow
int mul(int a, int b)
{
    int tmp = a;
    for(int i=1; i> t;
    int sum = 0;
    while (t--)
    {
        cin >> n;
        for (int i = mul(10,n-1); i < mul(10, n); i++)
        {
            //实现to_string的过程
            int cnt=0;
            w = i;
            while(w!=0)
            {
                a[cnt++]=w%10;
                w /= 10;
            }

            for(int j=0; j 

其实把乘积函数在main函数中单独写出来,比单独写个函数再去调用可能效率更高(但我这种也过了hh)

在日后遇到卡时间复杂度的题,可以在pow和to_string上做优化处理

 对于具体的pow和to_string实现暂时还没找到,如果有知道的并且愿意分享的万分感谢您

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号