呵呵,这个数论题
/* ID: qq104801 LANG: C++ TASK: nuggets */ #include <iostream> #include <fstream> #include <cstring> #include <vector> #include <queue> #include <stack> #include <algorithm> using namespace std; #define nmax 79500 int d[500000],temp,n; void test() { freopen("nuggets.in","r",stdin); freopen("nuggets.out","w",stdout); d[0]=1; cin>>n; while(n--) { cin>>temp; for(int i=temp;i<=nmax;i++)if(d[i-temp])d[i]=1; } temp=0; for(int i=nmax;i>=0;i--)if(!d[i]){temp=i;break;} for(int i=nmax;i>=79000;i--)if(!d[i]){temp=0;break;} cout<<temp<<endl; } int main () { test(); return 0; }
test data :
USACO Training Grader Results 13 users online AUT/1 BGD/1 CHL/1 CHN/7 GBR/1 IND/1 SWE/1 USER: cn tom [qq104801] TASK: nuggets LANG: C++ Compiling... Compile: OK Executing... Test 1: TEST OK [0.005 secs, 5324 KB] Test 2: TEST OK [0.005 secs, 5324 KB] Test 3: TEST OK [0.008 secs, 5324 KB] Test 4: TEST OK [0.008 secs, 5324 KB] Test 5: TEST OK [0.005 secs, 5324 KB] Test 6: TEST OK [0.008 secs, 5324 KB] Test 7: TEST OK [0.014 secs, 5324 KB] All tests OK. YOUR PROGRAM ('nuggets') WORKED FIRST TIME! That's fantastic -- and a rare thing. Please accept these special automated congratulations. Here are the test data inputs: ------- test 1 ---- 3 3 6 10 ------- test 2 ---- 2 2 3 ------- test 3 ---- 1 1 ------- test 4 ---- 4 252 250 254 256 ------- test 5 ---- 2 255 254 ------- test 6 ---- 5 251 252 250 254 256 ------- test 7 ---- 10 238 240 242 244 246 248 250 252 254 255 Keep up the good work! Thanks for your submission!