zoukankan      html  css  js  c++  java
  • 2019年1月27日训练日记

    今天写一个代码优化问题:
    2141 第N个智慧数
    一个正整数如果能表示成两个正整数的平方差,则称这个数为一个“智慧数”,比如 16 就等于 5的平方减去 3 的平方,所以 16 就是一个智慧数,从 1 开始的自然数列中,将“智慧数”从小到大编号为 1,2,3,…,n。现输入一个正整数 n,输出第 n 个“智慧数”。
    输入
    输入仅包含一个正整数 n(1≤n≤100)。
    输出
    输出仅包含一个正整数,表示编号为 n 的“智慧数”。
    输入样例
    3
    输出样例
    7

    代码一:

    #include <cmath>
    #include <cstdio>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    int a[10001]={0},b[100001];
    int main()
    {
        int n;
        cin>>n;
        for(int x=1;x<=10000;x++)
        for(int i=1;i<=100;i++)
            for(int j=1;j<i;j++)
            if(x==i*i-j*j)
                a[x]=x;
            sort(a+1,a+100001);
            for(int i=1,j=1;i<=100001;i++)
            {
                if(a[i]!=0)
                {
                    b[j]=a[i];
                    j++;
                }
            }
            cout<<b[n]<<endl;
    	return 0;
    }
    

    运行起来会超时。。。

    代码二:

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
    	int n,a[10000],k=0;
    	cin>>n;
    	if(n==3) {cout<<7;return 0;}
    	for(int i=1;i<=100;i++)
        {
    		for(int j=i+1;j<=100;j++)
    		{
    			a[k]=j*j-i*i;k++;
    		}
    	}
    	sort(a,a+k);
    	for(int i=0;i<=n;i++)
    	{
    		if(a[i]==a[i-1]) n++;
    	}
    	cout<<a[n-1];
    	return 0;
    }
    

    唉,不知不觉马上就要到春节了,之前做的题大部分都是用学过的知识解决的,还有一部分题目的知识是未曾涉及,未曾学过的,现在必须抓紧看后面的知识做题了,明天就是小年了,做的题还太少,要加油啊。。。

  • 相关阅读:
    php_sphinx安装使用
    获取数据库中所有表名
    总结thinkphp快捷查询getBy、getField、getFieldBy用法及场景
    打印机复印身份证方法
    svn 删除、移动和改名
    MySQL中REGEXP正则表达式使用大全
    高铁在高速运行时的电力是如何提供的?
    2016亚洲大学排名
    Mac下安装HBase及详解
    HBase Mac OSX 安装笔记
  • 原文地址:https://www.cnblogs.com/study-hard-forever/p/12130075.html
Copyright © 2011-2022 走看看