3720: 优化代码 2(语法周赛 Round 24(思维场))

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:4 解决:4

题目描述

33DAI 最近看到了这样一段代码:


#include <bits/stdc++.h> 

using namespace std; 

int main() { 

   long long n; 

   cin >> n; 

   long long ans = 0;

   while (n > 0) { 

       ans++; 

       long long cnt = 0; 

       for (long long i = 1; i <= ans; i++) 

           if (ans % i == 0) 

               cnt++; 

           if (cnt % 2 == 0) 

              n--; 

       }

       cout << ans;

       return 0;

}


33DAI 一看最大的数据范围:1015,这一秒时限不是妥妥的超时了吗!

请你想办法优化这段代码,提交一个输出和这个代码一样,但不会超时的代码。

显然如果你直接提交上面的代码,是能拿到本题 30 分的。

输入

第一行一个整数 

输出

一行一个整数,要求和题目描述中的代码输出一致。

样例输入 复制

3

样例输出 复制

5

提示

数据规模与约定

对于 100% 的数据,11015

  • 子任务 1(30 分):11000
  • 子任务 2(30 分):1109
  • 子任务 3(40 分):没有特殊限制。

来源/分类