CDOJ1323柱爷的下凡

    xiaoxiao2021-03-25  109

    C - 柱爷的下凡

    Time Limit: 400/400MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
    Submit  Status

    下凡的柱爷想只创造3种硬币,要求这3种硬币可以组成 [1,N] [1,N]的所有整数,并且表示一个 [1,N] [1,N]中的整数所用硬币的平均数量最少.

    你能帮柱爷解决他的小小问题吗?

    Input

    第一行一个正整数 T T,表示测试组数.

    接下来 T T行,每行一个正整数 N N.

    数据保证:

    1T200 1≤T≤200

    1N200 1≤N≤200

    Output

    输出一共有 T T行,每行三个整数 A A  B B  C C表示柱爷希望的三种不同硬币的面值.如果有多组解,请保证A尽可能小,如果仍有多组解,请保证B尽量小,如果仍有多组解,请保证C尽量小.  A<B<C A<B<C

    Sample input and output

    Sample Input Sample Output 1 1 1 2 3 1 7 1 2 5

    Hint

    N=7 N=7

    1 1元,需要 1 1 1 1 2 2元,需要 1 1 2 2 3 3元,需要 1 1 1 1元和 1 1 2 2 4 4元,需要 2 2 2 2 5 5元,需要 1 1 5 5 6 6元,需要 1 1 1 1元和 1 1 5 5 7 7元,需要 1 1 2 2元和 1 1 5 5元平均需要约 1.57

    function testmain1 close all T = 14560000; T = 0.8*T; %北京市总人口(Total Population) 56.00万人(2003年) %已确诊病例累计 现有疑似病例 死亡累计 治愈出院累计 d=[339 402 18 33 482 610 25 43 588 666 28 46 693 782 35 55 774 863 39 64 877 954 42 73 988 1093 48 76 1114 1255 56 78 1199 1275 59 78 1347 1358 66 83 1440 1408 75 90 1553 1415 82 100 1636 1468 91 109 1741 1493 96 115 1803 1537 100 118 1897 1510 103 121 1960 1523 107 134 2049 1514 110 141 2136 1486 112 152 2177 1425 114 168 2227 1397 116 175 2265 1411 120 186 2304 1378 129 208 2347 1338 134 244 2370 1308 139 252 2388 1317 140 257 2405 1265 141 273 2420 1250 145 307 2434 1250 147 332 2437 1249 150 349 2444 1225 154 395 2444 1221 156 447 2456 1205 158 528 2465 1179 160 582 2490 1134 163 667 2499 1105 167 704 2504 1069 168 747 2512 1005 172 828 2514 941 175 866 2517 803 176 928 2520 760 177 1006 2521 747 181 1087 2522 739 181 1124 2522 734 181 1157 2522 724 181 1189 2522 718 181 1263 2522 716 181 1321 2522 713 183 1403 2523 668 183 1446 2522 550 184 1543 2522 451 184 1653 2522 351 186 1747 2523 257 186 1821 2523 155 187 1876 2522 71 187 1944 2522 4 189 1994 2522 3 189 2015 2521 3 190 2053 2521 5 190 2120 2521 4 191 2154 2521 3 191 2171 2521 3 191 2189 2521 2 191 2231 2521 2 191 2257 2521 2 191 2277]; S = T - d(:,1)-d(:,3)-d(:,4); I = d(:,1)+d(:,2); % 感染人数 S1 = d(:,2); % 现有疑似病例 R = d(:,3)+d(:,4); t = (1:length(I))'; subplot(1,2,1); h=plot(t,I,'o-',t,S1,'*'); legend(h,'I','S') xdata = [I(1:end-1) S(1:end-1)] ydata = diff(I)./diff(t) %ydata = ydata((1:30),:); coef = lsqcurvefit(@ffun,[1 1],xdata,ydata) format long k = coef(1) h = coef(2) %z=kIS-hI % lsqcurvefit xdata(:,1) -> I, xdata(:,2)->S [T,Y]=ode23(@dfun,[0:60],[S(1) I(1) R(1)]); %Y(:,2) 为I的数值解 subplot(1,2,2); %plot(xdata,ydata,'ro',xdata,ffun(coef,xdata),'k*'); plot(t,I,'ro',T',Y(:,2)','k*') function ydata=ffun(coef,xdata) k = coef(1); h = coef(2); ydata = k*xdata(:,1).*xdata(:,2)-h*xdata(:,1); function dy=dfun(t,y) %y (1)-->S, y(2)-->I dy = zeros(2,1); S=y(1); I = y(2); R=y(3); k = 1.738382084343759e-05; h = 0.004435622880419; dy(1) = -k.*I.*S; dy(2)=k.*I.*S-h.*I; dy(3)=h.*I;

    转载请注明原文地址: https://ju.6miu.com/read-24670.html

    最新回复(0)