dp,用f[i]表示i划分的方案,直接枚举最后一个数是错误的,因为会导致c重复计数,然后正解十分神奇--当i为奇数,那么分解中一定有1,因此f[i]=f[i-1]当i为偶数若有1,同样转移到f[i-1]:没有1,可以将所有因数除以2,即f[i]=f[i-1]+f[i/2],注意对1e9取模 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mod 1000000000 4 int n,f[1000005]; 5 int mai…
1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 570 Solved: 310[Submit][Status] Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers th…
... #include <iostream> using namespace std; ]; int n,i; int main() { cin>>n; f[]=; ;i<=n;i++) { f[i]=f[i-]; )) f[i]+=f[i/]; f[i]%=; } cout<<f[n]; ; } Description Farmer John commanded his cows to search for different sets of numbers…
sum()求和是一个非常简单的函数,以前我的写法是这样,我想大部分和我一样刚开始学习JS的同学写出来的也会是这样. function sum() { var total=null; for(var i=0;i<arguments.length;i++){ var cur=Number(arguments[i]); if (!isNaN(cur)){ total+=cur; } } return total; } 看到下面这行,我发现自己的路还有很长很长-- function sum() { re…