Hướng dẫn giải của COMPANY


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Lưu ý: Các code mẫu dưới đây chỉ mang tính tham khảo và có thể không AC được bài tập này

Code mẫu của ladpro98

program LEM7;
uses    math;
const   maxE=trunc(1e4)+5;
        fi='';
var     n,s,k,p,q,t:array[0..maxE] of longint;
        E:longint;
        inp:text;

procedure init;
var     i,j,tt:longint;
begin
         for i:=1 to E do begin
                t[i]:=i+1;p[i]:=1;q[i]:=i;
                for j:=1 to trunc(sqrt(i)) do
                if (i mod j = 0) then begin
                        tt:=i div j;
                        if (j+tt)<t[i] then begin
                                t[i]:=j+tt;
                                p[i]:=j;
                                q[i]:=tt;
                        end
                        else if (j+tt=t[i]) and (j<p[i]) then begin
                                p[i]:=j;
                                q[i]:=tt;
                        end;
                end;
        end;
end;

procedure dp;
var     i,j,tt:longint;
begin
        for i:=1 to E do begin
                N[i]:=i+1;S[i]:=1;K[i]:=1;
                for j:=0 to trunc(sqrt(i)) do begin
                //for j:=0 to i-1 do begin
                        tt:=N[j]+t[i-j];
                        if N[i]>tt then begin
                                N[i]:=tt;
                                S[i]:=S[j]+P[i-j];
                                K[i]:=K[j]+1;
                        end
                        else if N[i]=tt then begin
                                if S[i]>S[j]+P[i-j] then begin
                                        S[i]:=S[j]+P[i-j];
                                        K[i]:=K[j]+1;
                                end
                                else if (S[i]=S[j]+P[i-j]) and (K[i]>K[j]+1) then K[i]:=K[j]+1;
                        end;
                end;
        end;
end;

begin
        assign(inp,fi);reset(inp);
        readln(inp,E);
        init;
        dp;
        write(N[E],' ',S[E],' ',K[E]);
end.

Code mẫu của hieult

#include <stdio.h>
//#include <conio.h>
#include <math.h>

int main()
{
    int n,f[10001],s[10001],k[10001];
    f[1] = 2; s[1] = 1; k[1] = 1;
    f[2] = 3; s[2] = 1; k[2] = 1;
    scanf("%d",&n);
    //while(scanf("%d",&n))
   // {
    for(int i = 3;i<=n;i++)
    {
        f[i] = i+1;s[i] = 1;k[i] = 1;
        int flag = 0;
        for(int j = int(sqrt(i));j>=2;j--)
        {
             if(i%j==0)
             {
                 flag = j;
                 break; 
             }
        }
        if(flag>0){ f[i] = flag+i/flag;s[i] = flag; k[i] = 1;}
       // else
        //{
            for(int j=1;j<=i/2;j++)
            {
                if(f[j]+f[i-j]<f[i])
                {
                    f[i] = f[j]+f[i-j];
                    s[i] = s[j]+s[i-j];
                    k[i] = k[j]+k[i-j];
                }
                else if(f[j]+f[i-j]==f[i])
                {
                     if(s[j]+s[i-j]<s[i])
                     {
                         s[i] = s[j]+s[i-j];
                         k[i] = k[j]+k[i-j];
                     }
                     else if(s[j]+s[i-j]==s[i] && k[i]<k[j]+k[i-j])
                         k[i] = k[j]+k[i-j];
                }
            }            
        //}       

    }
    printf("%d %d %d",f[n],s[n],k[n]);
   //getch();
}

Code mẫu của ll931110

{$mode objfpc}
const
  maxe = 10000;
  maxv = 10000000;
  k: array[1..maxe] of longint =
(1,1,1,1,1,1,2,1,1,1,2,1,2,1,1,1,2,1,2,1,1,2,2,1,1,2,1,1,2,1,2,1,1,2,1,1,2,2,1,1,2,1,2,1,1,2,2,1,1,1,
2,1,2,1,1,1,2,2,2,1,2,2,1,1,1,1,2,2,2,1,2,1,2,2,1,2,1,1,2,1,1,2,2,1,2,2,2,1,2,1,1,2,2,2,1,1,2,1,1,1,
2,1,2,1,1,2,2,1,2,1,2,1,2,1,2,2,1,2,1,1,1,2,2,2,2,1,2,1,2,1,2,1,2,2,1,1,2,2,2,1,2,2,1,1,2,2,1,2,2,1,
2,1,1,1,2,1,2,2,2,1,2,1,2,2,1,2,2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,1,2,1,1,2,1,2,2,1,1,2,1,2,1,
2,2,2,1,2,2,1,1,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,1,1,2,2,1,2,1,1,2,2,1,2,2,2,1,2,1,2,1,2,2,2,2,1,2,2,1,
2,1,1,2,1,1,2,2,2,1,2,2,2,1,2,1,2,2,2,1,2,1,1,2,1,1,2,2,2,1,2,2,2,2,1,1,2,1,1,2,2,2,2,1,2,2,1,2,1,1,
2,2,2,1,2,1,2,1,2,2,2,1,2,2,1,2,2,2,1,1,2,1,1,1,1,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,2,1,2,2,1,2,2,1,2,1,
1,1,2,2,2,2,1,2,2,1,1,2,2,1,2,2,2,1,2,2,2,1,2,1,1,2,1,1,2,1,2,2,2,1,2,2,2,2,2,1,1,1,2,2,2,1,2,2,1,1,
2,2,1,2,1,1,2,1,2,2,2,2,2,1,2,1,2,1,2,1,2,2,2,2,1,2,2,2,1,2,2,1,2,1,1,2,1,2,2,1,1,1,2,2,2,2,2,1,2,1,
2,2,2,2,1,1,2,2,1,1,2,1,2,1,1,2,2,1,2,2,2,2,2,2,1,1,2,2,2,1,2,2,1,1,2,1,2,2,2,1,2,2,1,1,2,1,2,2,2,1,
2,2,2,1,2,1,2,2,2,1,2,1,1,2,2,2,2,1,2,1,2,1,2,2,1,2,1,1,1,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,1,
1,1,2,2,2,2,2,1,2,1,1,2,2,2,2,2,1,2,2,1,2,1,2,2,1,1,2,1,2,1,2,2,2,2,1,2,2,1,1,2,2,1,2,1,2,2,2,1,2,1,
2,2,2,2,2,2,2,1,1,2,2,1,2,2,2,1,2,2,2,1,1,2,2,1,1,2,1,2,1,1,2,2,2,2,2,2,2,1,2,1,2,2,2,1,2,1,2,1,2,1,
1,2,2,2,2,2,2,2,2,1,2,2,1,2,1,1,1,2,2,2,2,1,2,2,1,1,2,2,2,1,2,1,2,1,2,2,2,2,2,1,2,2,1,2,2,1,2,2,2,1,
2,1,2,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,1,2,1,2,2,1,1,2,1,1,2,2,2,2,2,1,1,2,2,2,1,1,2,2,1,2,2,2,1,2,1,
2,2,2,1,2,1,2,2,1,1,2,2,2,2,2,2,2,1,2,1,2,2,2,1,1,2,1,2,1,1,2,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,
2,2,2,2,1,1,2,2,2,1,2,1,2,1,2,1,2,2,1,1,2,2,2,2,1,2,2,1,2,2,2,1,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,1,
1,2,2,2,1,2,2,1,2,2,1,2,2,1,2,2,2,1,2,1,2,2,2,1,1,2,2,2,2,1,2,1,2,1,2,2,2,1,2,2,1,2,2,2,2,1,1,2,1,1,
2,1,1,2,2,2,2,2,2,1,2,1,2,2,2,2,2,1,2,1,2,2,2,1,1,2,2,1,2,1,2,2,2,2,2,1,2,2,2,2,2,2,1,2,1,2,2,2,2,1,
2,1,2,2,2,2,1,2,2,1,1,1,2,2,2,1,2,1,2,2,2,1,2,2,1,2,2,2,2,1,2,2,2,1,2,1,2,1,1,1,2,1,2,2,2,2,2,2,1,1,
2,2,2,2,2,2,2,1,2,2,2,1,2,1,1,2,2,2,2,1,2,2,1,1,1,1,2,2,2,2,2,1,2,1,1,1,2,2,2,1,2,2,2,1,2,2,2,2,2,1,
2,2,1,1,2,1,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1,2,1,2,1,2,2,1,2,1,2,2,2,2,1,2,2,1,1,2,2,1,2,2,2,2,2,2,2,1,
2,1,2,1,2,2,1,2,2,1,2,2,2,2,2,1,2,1,2,1,2,1,2,2,1,2,1,1,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,
2,1,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,1,1,2,1,2,2,2,2,2,1,2,2,2,1,1,1,2,2,2,2,2,1,2,2,2,1,
2,2,2,1,2,2,2,2,1,2,2,2,2,2,1,1,2,1,2,2,1,2,2,1,1,2,2,2,2,1,2,1,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1,1,2,2,
2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,2,1,2,1,2,2,1,1,1,2,2,2,1,2,2,2,2,2,2,1,1,2,1,2,1,2,2,1,1,2,2,2,1,
2,1,2,2,1,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,1,2,1,1,2,2,2,1,2,1,1,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,
2,1,1,2,2,2,2,2,2,1,2,2,1,1,1,2,2,1,1,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,1,1,2,2,2,2,1,
2,2,2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1,2,1,2,2,1,2,2,2,1,2,2,2,2,1,2,2,1,1,2,2,2,2,2,1,
2,1,2,2,2,1,1,2,2,2,2,1,2,2,2,2,2,2,3,1,2,1,2,2,2,1,2,2,1,1,2,1,2,2,1,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,
2,2,2,1,1,2,2,1,2,2,2,1,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,2,1,1,2,2,2,2,2,2,3,1,2,1,
1,2,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2,1,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,1,1,2,2,2,1,1,2,1,1,1,
2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1,2,2,1,2,2,2,1,2,2,3,1,2,2,2,1,2,1,2,2,2,1,2,1,2,2,1,2,1,2,2,2,2,1,
2,2,1,2,2,1,2,2,2,2,2,2,3,1,1,1,2,2,2,2,2,1,2,1,2,2,1,2,2,1,1,2,1,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,
2,1,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,1,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,2,1,2,2,2,2,2,2,3,2,1,1,1,
2,2,2,2,1,2,2,2,2,1,2,2,1,1,2,2,1,1,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,1,2,2,2,2,2,1,2,1,2,2,2,1,2,1,
2,1,2,1,2,1,2,2,2,2,2,2,1,2,1,2,2,2,2,1,2,2,2,1,2,2,2,2,1,1,2,2,1,2,2,1,2,2,2,1,2,2,2,2,1,2,2,1,1,1,
2,2,2,2,1,1,2,2,2,1,2,1,2,2,2,2,2,2,3,1,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,1,2,2,1,2,1,2,2,2,2,2,2,2,1,
2,2,2,1,2,2,2,1,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,1,1,2,1,2,2,2,2,1,2,2,1,1,2,1,2,2,2,2,2,1,2,2,1,2,2,1,
2,2,2,2,2,2,3,2,2,1,1,2,2,2,2,2,2,1,2,2,2,1,2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,1,
2,2,2,2,2,1,2,2,1,2,2,2,1,1,2,1,2,2,2,2,1,2,2,1,1,2,2,1,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,
2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,1,2,1,2,1,2,1,2,2,2,2,1,1,2,2,2,2,2,2,3,1,2,1,1,2,2,2,2,2,2,2,2,1,
2,2,2,2,2,1,1,2,1,2,2,1,2,2,1,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,1,2,2,2,1,2,2,1,2,2,1,1,2,2,2,1,
2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,1,2,2,2,1,2,2,1,2,2,1,2,1,2,3,2,2,1,1,2,2,2,2,2,2,3,2,1,2,2,1,2,2,2,1,
2,2,2,1,1,2,2,1,1,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,1,2,1,2,2,2,2,2,1,
2,2,2,1,1,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,1,2,1,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,1,2,2,2,1,
1,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,1,2,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,1,2,2,1,2,2,2,2,1,1,2,2,2,1,
2,1,2,2,2,1,2,2,2,1,2,2,2,2,1,2,2,1,2,2,2,2,2,2,2,1,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,1,2,1,2,2,1,2,2,1,
1,2,2,2,1,2,2,1,2,2,2,1,2,2,1,2,2,1,1,1,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,1,2,1,2,1,2,1,2,1,2,2,2,1,2,1,
1,2,2,2,2,2,1,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,1,2,2,1,2,1,2,2,2,1,2,2,2,2,2,2,1,2,2,1,2,1,2,2,1,1,
1,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,2,2,2,1,2,1,1,2,2,2,1,2,1,2,2,2,1,2,1,
2,1,2,2,2,2,2,2,2,1,2,1,2,2,1,2,2,2,2,2,2,3,2,1,2,1,2,2,2,1,2,2,1,1,1,2,2,2,2,1,2,1,2,2,2,1,1,2,2,1,
1,2,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,2,2,1,1,1,2,2,1,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,2,2,2,1,
2,1,2,2,1,2,2,2,2,1,2,2,2,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,1,2,2,1,2,2,2,1,2,2,2,2,1,
2,2,1,1,2,1,2,2,1,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,1,1,2,1,2,2,1,
2,1,2,1,2,1,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,1,2,2,1,2,1,2,2,2,2,1,
2,2,2,2,1,1,2,1,1,2,2,2,2,1,2,1,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,1,2,2,1,2,2,1,2,1,2,1,2,2,2,2,1,2,1,1,
2,1,2,2,2,1,2,2,2,1,2,1,2,2,2,2,1,2,2,1,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,1,2,1,2,2,1,2,2,2,2,2,2,1,2,1,
2,2,2,1,2,2,1,2,2,2,1,1,2,1,1,1,2,2,2,2,2,2,2,1,1,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,2,2,2,1,2,2,2,1,2,1,
2,2,2,2,2,2,3,1,2,2,1,2,2,1,2,2,1,1,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,1,1,2,2,2,2,2,2,1,
2,2,2,2,2,2,3,1,1,2,2,2,2,2,1,1,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,1,2,1,2,1,2,2,2,2,2,2,2,2,2,2,3,1,
2,2,1,2,1,2,2,2,2,1,2,2,2,2,2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2,1,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,1,
2,1,2,2,1,2,2,1,2,2,1,2,2,2,2,1,2,3,2,1,2,2,2,1,2,2,1,1,2,2,2,1,2,2,1,1,2,2,1,2,2,2,2,2,2,2,2,2,1,1,
2,2,2,2,2,2,1,2,2,1,2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,3,1,2,2,2,2,1,1,2,2,2,1,2,1,2,2,1,1,2,2,2,1,
2,2,2,2,2,2,3,2,2,2,2,1,1,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,2,1,1,2,2,2,2,2,1,2,2,1,2,1,2,2,1,1,1,
2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,1,2,1,2,2,3,2,2,2,2,1,2,2,2,2,2,2,1,2,1,1,2,2,2,1,2,2,2,1,2,2,2,2,2,1,
2,2,2,1,2,1,2,2,2,2,1,1,2,2,1,2,2,2,2,2,2,3,2,2,2,2,2,1,2,1,2,1,2,2,2,2,1,2,1,2,2,2,2,1,2,2,2,1,2,1,
2,2,2,1,1,2,2,1,2,1,2,2,1,1,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,1,1,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,1,2,3,1,
2,1,2,1,2,2,2,1,2,1,2,2,2,2,2,1,1,2,2,1,2,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,1,
2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,1,2,2,2,1,2,2,2,2,1,2,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,
2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,1,2,2,2,2,1,2,2,1,2,2,2,2,2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,2,2,1,
1,1,2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,1,1,2,1,2,2,1,2,1,2,2,2,2,3,2,1,2,2,2,1,2,2,1,2,2,2,2,1,2,2,1,1,
2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,3,2,2,1,2,2,2,2,1,2,3,1,2,1,
2,2,2,1,2,2,1,1,2,1,2,2,2,2,2,1,2,2,2,2,3,1,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,1,2,2,2,1,2,2,2,1,
2,2,2,2,1,2,2,2,2,1,2,1,2,2,2,2,1,2,2,1,1,2,1,1,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,1,2,2,2,2,2,1,
2,1,2,2,2,2,2,2,3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,1,2,2,1,1,2,2,2,1,
2,2,2,2,2,2,1,1,2,2,2,2,2,2,3,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,2,2,2,1,1,2,2,2,2,1,2,2,1,1,2,2,2,1,2,1,
2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,1,2,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,1,2,2,2,2,2,1,2,2,2,2,2,1,
2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,2,3,2,1,2,1,2,2,2,2,2,1,
2,1,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,1,1,2,2,2,2,2,1,1,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,1,1,2,2,2,1,
2,1,2,1,2,2,2,2,3,2,2,1,2,2,1,2,2,1,2,1,2,2,2,2,2,1,2,1,1,1,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,1,
2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,1,1,2,2,2,1,2,2,1,1,2,2,2,1,
2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,1,2,2,1,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,
2,2,2,1,2,2,2,1,2,1,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,1,2,1,2,2,2,2,2,2,3,2,2,2,1,
2,2,2,2,2,2,3,2,1,2,2,1,2,1,2,1,2,1,2,2,1,2,2,1,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,1,2,2,2,2,2,2,2,1,2,2,
2,2,2,2,3,1,2,2,2,1,2,2,2,1,2,1,2,2,2,1,2,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,1,1,2,2,2,2,2,2,1,
2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,2,2,2,1,1,2,2,1,2,2,2,2,1,2,2,2,2,1,1,1,2,2,1,
2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,1,2,2,2,2,2,2,1,1,
2,1,2,2,2,2,2,1,2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,1,1,2,2,1,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,1,
2,1,1,2,1,2,2,2,2,3,2,2,2,1,2,1,2,2,2,2,2,1,1,2,2,2,2,2,2,1,2,1,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,
2,2,1,2,1,2,2,1,2,1,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,2,2,2,2,1,
2,2,2,1,2,1,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,2,2,2,2,2,2,1,2,
2,1,2,2,2,2,2,1,2,2,1,2,2,2,1,2,1,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,1,
2,2,2,2,2,2,3,2,2,2,1,1,2,2,2,2,2,2,2,2,2,1,2,1,1,2,2,2,2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,1,1,2,2,
2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,1,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2,1,2,2,2,1,2,2,2,2,1,2,2,2,2,2,
2,1,2,2,2,1,1,1,2,1,1,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,
2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,1,2,1,1,2,2,2,1,1,2,2,2,1,2,1,2,2,2,2,2,1,2,1,2,1,2,2,2,2,1,2,2,2,2,1,
1,2,2,2,2,2,2,3,2,1,2,2,2,1,2,2,2,2,2,2,3,1,2,2,1,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,1,2,2,2,1,1,1,1,1,1,
2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,1,2,2,2,2,3,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,
2,2,2,2,2,1,2,1,2,1,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,1,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,2,
2,1,2,2,1,2,2,2,2,2,2,3,2,2,1,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,1,1,2,2,2,2,1,2,2,2,2,
2,2,2,2,2,1,2,2,2,1,2,2,1,2,2,2,2,2,2,1,2,2,1,1,2,1,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,3,1,
2,2,1,1,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,1,2,1,2,2,2,2,2,2,3,2,2,2,1,2,1,2,2,
2,1,2,2,2,2,2,2,1,1,2,1,2,2,2,1,2,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,1,1,1,2,1,2,2,2,2,1,2,2,2,2,2,2,2,1,
2,2,2,2,2,2,3,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,1,1,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,1,2,1,2,1,
2,2,2,1,2,1,2,2,2,2,2,2,2,1,1,2,2,2,2,1,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,3,2,2,2,3,1,1,2,2,2,2,2,2,1,
1,2,2,1,2,2,1,2,2,1,2,1,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,1,1,1,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,
2,2,1,2,1,2,2,1,2,1,2,2,2,2,2,2,3,1,1,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,1,1,1,2,2,2,1,
2,1,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,1,2,2,2,2,2,2,3,2,1,2,1,2,2,1,2,3,2,2,2,2,2,1,2,2,2,2,1,2,3,2,2,2,
1,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,1,1,2,1,2,2,1,2,2,2,2,2,1,1,2,1,2,2,2,1,2,2,2,2,2,2,
3,2,2,1,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,1,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,2,2,2,1,2,1,
2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,1,2,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,1,
2,2,2,2,1,2,1,2,1,1,2,1,2,2,2,1,2,2,2,2,1,2,2,1,1,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2,1,2,1,2,2,2,2,2,2,
3,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,2,3,1,2,2,1,2,2,1,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,1,1,2,1,2,1,
2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,1,2,2,2,1,2,2,2,2,2,1,1,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,
1,2,2,2,2,2,2,3,2,1,2,1,2,2,2,1,1,2,2,2,2,1,2,2,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,
2,2,3,2,2,2,3,1,2,1,2,2,2,2,2,2,2,2,2,1,2,1,2,1,2,2,2,1,1,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,2,1,2,1,
2,1,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,1,2,2,1,2,2,1,2,2,2,1,
2,2,2,1,2,2,2,2,2,2,3,2,1,2,1,1,2,2,2,1,2,1,2,2,1,2,2,1,1,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,1,
2,1,2,2,2,2,3,2,1,2,2,2,1,1,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,1,2,2,2,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,
2,2,1,1,2,1,2,2,2,2,2,2,2,1,2,1,2,1,2,1,2,2,2,2,2,2,3,2,2,1,2,2,2,2,1,2,2,2,1,2,2,1,2,2,1,2,2,1,2,2,
2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,1,2,2,1,2,2,2,2,1,2,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,1,
2,2,2,1,2,1,2,2,2,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,2,2,2,2,2,1,2,2,1,1,2,1,2,2,2,2,2,1,
2,2,2,2,2,1,2,2,2,1,2,1,2,1,2,2,2,2,2,2,2,2,2,1,1,2,1,2,2,2,2,2,2,3,2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,1,
2,2,2,1,1,2,2,1,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,1,1,1,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,1,2,2,
2,2,2,2,3,1,2,2,2,2,2,1,2,1,2,2,2,2,2,1,2,1,2,2,2,2,2,1,1,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,1,
2,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,1,1,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,1,2,2,
1,2,2,2,2,2,2,3,2,1,2,2,1,1,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,2,2,1,1,1,2,2,2,1,2,2,1,1,
2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,2,1,2,2,1,2,1,2,2,2,2,2,2,2,1,2,1,
2,2,2,2,2,2,3,2,2,1,1,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,2,1,2,1,1,
2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,3,2,1,2,2,1,2,2,2,1,2,1,2,1,2,2,2,2,2,2,3,2,1,2,2,2,2,2,
2,1,2,2,1,2,1,2,2,1,1,2,2,2,1,1,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,1,
2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,1,2,2,2,2,2,1,2,2,1,2,2,1,2,2,2,1,2,1,1,2,2,2,2,2,2,1,
2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,1,1,2,2,1,2,
2,2,2,2,2,3,2,1,2,2,2,2,2,2,1,1,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,1,
2,2,2,2,2,2,3,1,2,1,2,1,2,1,2,2,1,1,2,2,2,2,2,2,3,1,2,2,2,2,2,2,3,1,2,1,2,2,1,1,2,2,2,1,2,2,2,1,2,1,
2,2,2,1,2,1,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,
2,2,1,2,2,2,2,2,2,1,2,1,2,1,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,1,2,1,2,2,1,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,
2,2,2,2,2,2,3,2,2,2,3,1,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,2,3,1,2,2,2,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,
2,1,2,2,2,1,2,1,2,1,2,2,2,2,2,1,2,2,1,1,2,1,2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,1,2,2,3,1,
2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,1,1,2,2,2,1,2,2,1,2,1,2,2,2,2,2,2,1,2,2,1,
2,1,2,2,1,1,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,3,2,2,2,3,2,2,1,2,1,
2,1,2,1,2,2,1,2,2,1,2,2,2,2,2,2,3,2,2,1,2,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,1,2,2,2,2,2,1,
2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,1,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,3,2,2,2,1,
2,2,2,2,2,2,3,1,1,2,2,2,2,2,2,1,2,2,2,1,1,2,2,1,1,2,1,2,2,2,2,2,2,2,2,1,2,1,2,2,2,1,2,2,1,2,2,2,2,2,
2,1,2,1,2,2,2,2,2,1,2,2,2,2,3,2,2,1,2,2,2,1,2,2,1,2,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,2,2,2,2,1,2,1,2,1,
2,2,1,1,2,2,2,1,2,1,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,2,2,1,2,2,1,
2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,1,1,1,1,2,2,2,2,2,2,1,2,2,1,1,2,2,1,2,2,2,2,1,2,2,1,1,2,2,2,1,
2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,2,2,1,2,1,2,2,
2,1,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,2,2,1,2,1,2,2,2,1,2,1,2,2,2,2,2,1,2,1,2,2,2,2,3,2,2,2,2,1,
2,2,2,1,1,2,2,2,2,2,2,3,2,2,2,2,2,3,1,1,2,2,2,1,2,1,2,2,2,2,3,2,1,2,2,2,2,2,2,1,2,2,2,1,2,1,2,1,2,2,
2,2,1,2,2,2,2,2,2,1,2,2,2,2,1,1,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,2,2,1,2,1,2,2,2,2,1,2,2,1,
2,2,2,2,2,2,3,2,2,2,3,2,3,1,2,2,2,2,2,2,3,1,1,2,2,1,2,2,2,1,2,1,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,
2,2,2,1,2,1,2,2,2,2,2,2,1,2,1,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,2,3,2,1,1,2,2,2,1,
2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,2,2,2,1,2,2,1,2,2,1,2,2,1,2,2,2,2,2,2,1,2,2,1,1,1,2,1,1,1,2,2,2,2,2,2,
2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,1,2,2,1,
2,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,3,1,1,2,2,2,2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,
2,2,2,1,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,1,2,2,2,2,2,2,3,2,2,2,1,2,2,2,1,
2,2,2,1,1,2,2,2,2,1,2,1,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,
2,1,2,1,2,1,1,2,2,2,2,2,2,2,2,2,3,1,2,2,2,2,2,2,3,2,2,2,1,1,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,3,1,2,1,
2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,2,1,2,2,2,1,1,1,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,3,2,2,1,
1,2,2,2,2,1,2,1,2,2,2,2,2,1,2,1,2,2,2,2,3,2,1,2,1,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,1,2,2,2,2,1,2,2,1,1,
2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,3,2,3,1,2,1,2,2,1,2,2,1,2,1,2,2,2,2,2,1,2,2,
2,2,2,2,3,2,2,2,3,1,2,1,2,2,1,2,3,2,2,1,2,2,2,2,1,1,2,1,2,2,1,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,1,
2,2,2,2,2,2,3,1,2,2,1,2,2,1,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,3,2,1,2,2,2,2,2,2,1,1,2,2,2,2,1,2,2,2,1,1,
2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,1,2,2,2,1,2,2,2,2,1,2,2,1,1,1,2,1,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,1,
2,2,2,2,2,2,1,2,2,2,2,2,3,2,2,1,2,2,2,1,2,1,2,2,1,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,1,2,2,1,2,2,2,2,
2,1,2,2,2,2,2,2,3,1,2,2,2,1,2,1,2,2,2,1,2,1,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,1,2,2,2,2,1,
2,2,2,2,2,2,3,2,2,2,3,2,3,2,1,2,2,2,2,2,2,3,2,1,2,2,2,1,2,2,2,2,2,2,3,1,2,2,1,2,2,2,2,2,2,1,2,1,2,2,
2,2,1,2,1,2,2,2,2,1,2,2,1,1,2,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,1,2,2,2,1,
2,1,2,2,1,2,2,2,2,1,2,1,2,1,2,2,2,2,2,2,3,2,2,2,3,1,2,1,2,2,2,1,2,2,2,1,2,2,2,2,1,2,3,1,2,2,1,2,1,1,
2,2,2,1,2,1,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,2,3,2,2,2,3,1,2,2,2,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,1,
2,2,2,2,2,2,3,2,2,1,1,2,1,2,2,2,2,2,2,3,2,2,2,1,2,2,2,2,2,2,3,1,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,1,1,2,
2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,2,1,2,2,1,2,2,2,2,2,2,3,2,2,1,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,1,
2,2,2,2,2,2,3,2,2,2,3,1,2,2,1,2,2,2,2,1,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,1,2,2,
2,2,2,2,1,2,2,2,2,1,2,3,2,2,2,3,2,3,1,2,2,1,2,1,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,3,2,2,2,1,2,1,
2,2,2,2,2,1,2,2,2,2,1,2,2,1,2,1,2,2,2,1,2,2,2,2,2,2,1,2,1,2,2,1,2,2,1,1,2,2,2,1,2,2,2,2,2,2,2,1,2,1,
2,2,2,2,1,1,2,1,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,1,2,2,2,2,2,1,1,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,3,1,
2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,1,2,1,1,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,
3,2,2,1,2,2,2,2,2,1,1,2,2,1,2,2,2,1,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,1,2,1,2,2,2,2,2,2,2,2,1,
2,2,2,2,2,1,2,2,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,1,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,1,1,2,2,
2,2,2,2,2,2,2,2,2,2,3,2,2,1,2,2,2,2,2,2,3,1,2,2,1,2,2,1,2,2,2,2,2,2,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,
2,1,2,2,2,2,3,1,2,2,2,2,2,1,2,1,2,1,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,2,3,2,1,
2,1,1,2,2,1,2,2,2,2,2,2,1,1,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,1,2,1,2,1,
2,1,2,1,2,2,1,2,2,2,2,1,1,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,1,
2,2,3,2,2,1,2,2,2,2,2,2,3,2,1,1,2,2,2,1,2,2,2,2,2,2,3,2,2,1,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,
2,2,2,2,2,1,2,2,1,1,2,1,2,2,1,2,1,2,2,2,2,1,2,1,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,2,3,2,2,1,1,2,2,1,2,1,
2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,3,2,1,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,2,1,2,2,2,1,
2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,3,1,2,2,2,2,2,1,2,2,2,1,1,2,2,1,2,1,2,2,2,2,2,2,2,2,2,1,
2,2,2,2,2,2,3,2,2,1,2,1,2,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,1,2,2,1,2,2,1,2,2,2,2,2,1,2,1,2,2,2,2,2,1,
2,2,2,1,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,1,2,2,2,2,2,2,3,2,2,2,3,2,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2,
2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,3,2,1,2,2,2,1,2,1,1,2,2,2,2,1,
2,2,1,1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,2,1,2,2,1,2,1,2,1,2,2,2,2,2,1,1,2,2,2,2,2,2,1,2,2,2,2,
2,2,3,2,2,2,1,2,2,1,2,2,2,2,2,2,3,2,2,2,3,1,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,1,
1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,2,1,2,2,2,2,2,2,2,1,2,2,3,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,1,
2,1,2,2,2,2,2,1,2,1,2,2,2,2,1,2,2,1,2,2,2,2,2,2,1,1,2,2,2,2,2,2,3,2,1,2,2,2,2,1,2,1,2,1,2,2,1,2,2,1,
1,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,3,2,2,2,2,2,3,2,1,2,2,1,2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,
3,2,2,2,1,1,2,1,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,1,2,1,1,2,2,2,2,2,2,2,1,2,1,2,2,2,1,2,2,2,1,2,1,
2,2,2,2,2,2,2,2,2,2,3,1,2,2,2,2,2,1,1,2,2,1,2,2,2,2,2,2,2,2,2,3,1,2,2,1,2,2,2,2,2,2,3,1,1,2,2,2,2,2,
1,2,2,2,2,2,2,3,2,1,2,2,1,1,2,2,2,1,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,2,2,2,2,1,2,2,1,1);

type
  info = record
    n,s: longint;
  end;
var
  e: longint;
  a: array[1..maxe] of info;
  list: array[1..maxe] of longint;
  nlist: longint;

operator +(a1,a2: info) a3: info;
begin
  a3.n := a1.n + a2.n;
  a3.s := a1.s + a2.s;
end;

operator <(a1,a2: info) bool: boolean;
begin
  bool := (a1.n < a2.n) or ((a1.n = a2.n) and (a1.s < a2.s));
end;

procedure que1(x: longint);
var
  i: longint;
begin
  inc(nlist);  list[nlist] := x;
  i := trunc(sqrt(x));

  while x mod i <> 0 do dec(i);
  with a[x] do
    begin
      n := i + x div i;
      s := i;
    end;
end;

procedure que2(x: longint);
var
  i,t: longint;
begin
  a[x].n := maxv;  a[x].s := maxv;
  i := 1;

  while (i <= nlist) and (list[i] <= x div 2) do
    begin
      t := list[i];
      if (k[x - t] = 1) and (a[t] + a[x - t] < a[x]) then a[x] := a[t] + a[x - t];
      inc(i);
    end;
end;

procedure que3(x: longint);
var
  i,t: longint;
begin
  a[x].n := maxv;  a[x].s := maxv;
  i := 1;

  while (i <= nlist) and (list[i] < x) do
    begin
      t := list[i];
      if (k[x - t] = 2) and (a[t] + a[x - t] < a[x]) then a[x] := a[t] + a[x - t];
      inc(i);
    end;
end;

procedure solve;
var
  i: longint;
begin
  nlist := 0;
  for i := 1 to e do
    case k[i] of
      1: que1(i);
      2: que2(i);
      3: que3(i);
    end;
end;

begin
  readln(e);
  solve;
  writeln(a[e].n, ' ', a[e].s, ' ', k[e]);
end.

Code mẫu của skyvn97

#include<cstdio>
#include<queue>
#define MAX   10010
#define FOR(i,a,b) for (int i=(a),_b=(b);i<=_b;i=i+1)
#define REP(i,n) for (int i=0,_n=(n);i<_n;i=i+1)
using namespace std;
const int INF=(int)1e9+7;
struct Triple {
    int n,s,k;
    Triple() {
        n=s=k=0;
    }
    Triple(int _n,int _s,int _k) {
        n=_n;s=_s;k=_k;
    }
    Triple addMore(int x,int y) {
        return (Triple(n+x+y,s+x,k+1));
    }
    bool operator < (const Triple &x) const {
        if (n!=x.n) return (n<x.n);
        if (s!=x.s) return (s<x.s);
        return (k<x.k);
    }
};
Triple f[MAX];
int e;
void process(void) {
    scanf("%d",&e);
    FOR(i,1,e) f[i]=Triple(INF,INF,INF);
    f[0]=Triple(0,0,0);
    REP(i,e) {
        int left=e-i;
        int sta=0;
        while (sta*sta<=left) sta++; sta--;
        FOR(j,max(1,sta-25),sta) FOR(k,j,left/j)
            f[i+j*k]=min(f[i+j*k],f[i].addMore(j,k));
    }
    printf("%d %d %d\n",f[e].n,f[e].s,f[e].k);
}
int main(void) {
    process();
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.