感觉你现在的知识储备还可以了,问题在于如何做题。
很多时候题目都不是模板题,不是说你一定要知道某个经典算法才能做的。大部分时候都是依靠着基础的算法,自己创造出一个解决办法。这就需要对基础知识掌握得十分牢固以及大量的做题思考后才能达到。希望自己以后做题要多乱搞,或者说多分析思考,而不是总想着套什么算法。
找规律就是一种乱搞,能优化时间复杂度。至于怎么想到答案,我只能说,就认真想就好了。认真想你就会分析,然后能找到一些突破口进而解决问题。突破口其实就那么点,线索也就那么点,所以大部分人思考后的解法都是差不多的。
与其说是找规律,不如说是乱搞,或者说想尽办法去解决问题。
一个一个加会超时,那就尝试找到一段一段的规律,然后一整段加起来。
一开始WA还以为是要高精度呢,事实上只是自己在编程时有一些细节漏掉了。
在一些结束的边界情况有所遗漏。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k;
int main()
{
while(scanf("%lld %lld",&n,&k)!=EOF)
{
ll i=1;
ll ans=0;
while(1)
{
ll p=k/i;
if(p==0)
{