对了一部分 剩下WA 解决方法

P2669 [NOIP2015 普及组] 金币

yzx_todd @ 2024-03-02 12:42:39

如果一部分对了,剩下WA的话,可以考虑一下整除 就是数据可能重复到了第n轮,但是并不是n轮的最后 一天
for example: 假设4天
第一天 1个 第二天1+2=3个 第三天 3+2=5个 第四天 5+3=8天 但是此时没有把第三轮的金币发完


by lvy_OPCI2501_004 @ 2024-07-17 22:43:36

是的,谢谢ss


by Andy_hpy @ 2024-08-09 11:07:12

递归方案

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100005];
ll f1(ll n,ll s){
    if(n<s)return n*s;
    if(a[n]!=0)return a[n];
    a[n]=s*s+f1(n-s,s+1);
    return a[n];
}
ll f(ll n){return f1(n,1);}
int main(){
    ll n;
    cin>>n;
    cout<<f(n);
    return 0;
}

|