Advertisement
Shiam7777777

Untitled

Apr 6th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  4. #define ll long long
  5. #define ld double
  6. #define llu long long unsigned
  7.  
  8. int prime[300000],nprime;
  9. int mark[1000000];
  10. void sieve(int n)
  11. {
  12.     int i,j,limit= sqrt(n*1.)+2;
  13.     mark[1] = 1;
  14.     for(i=4;i<=n;i+=2)
  15.         mark[i]=1;
  16.     prime[nprime++]=2;
  17.     for(i=3;i<=n;i+=2)
  18.         if(!mark[i])
  19.         {
  20.             prime[nprime++]=i;
  21.             if(i<=limit)
  22.             {
  23.                 for(j=i*i;j<=n;j+=i*2)
  24.                 {
  25.                     mark[j]=1;
  26.                 }
  27.             }
  28.         }
  29. }
  30.  
  31. int main()
  32. {
  33.     fast;
  34.     sieve(10000);
  35.     map < int , int > ts;
  36.     for(int i=0;i<nprime;i++)
  37.          ts[ prime[i] ] = 1;
  38.     int t;
  39.     cin>>t;
  40.     for( int c = 1 ; c <= t ; c++ )
  41.     {
  42.         cout<<"Case #"<<c<<": ";
  43.         int n , l;
  44.         cin>>n>>l;
  45.         vector < int > v;
  46.         vector < int > crypto;
  47.         for( int i = 0 ; i < l ; i++ )
  48.         {
  49.             int x;
  50.             cin>>x;
  51.             v.push_back( x );
  52.         }
  53.         for(int i=0;i<nprime;i++)
  54.         {
  55.             if( v[0] % prime[i] == 0 and ts[ v[0] / prime[i] ] == 1 )
  56.             {
  57.                 crypto.push_back( prime[i] );
  58.                 crypto.push_back( v[0] / prime[i] );
  59.                 break;
  60.             }
  61.         }
  62.         for( int i = 1 ; i < l ; i++ )
  63.         {
  64.             if( v[i] % crypto[ crypto.size() - 1 ] == 0 and ts[ v[i] / crypto[ crypto.size() - 1 ] ] == 1 )
  65.                 crypto.push_back( v[i] / crypto[ crypto.size() - 1 ] );
  66.             else if( v[i] % crypto[ crypto.size() - 2 ] == 0 and ts[ v[i] / crypto[ crypto.size() - 2 ] ] == 1 )
  67.                 crypto.push_back( v[i] / crypto[ crypto.size() - 2 ] );
  68.         }
  69. //        for( int i = 0 ; i < crypto.size() ; i++ )
  70. //            cout<<crypto[i]<<" ";
  71. //        cout<<endl;
  72.         vector < int > copyV;
  73.         copyV = crypto;
  74.         sort( copyV.begin() , copyV.end() );
  75.         map < int , char > m;
  76.         m[ copyV[0] ] = 'A';
  77.         char ch = 'B';
  78.         for( int i = 1 ; i < crypto.size() ; i++ )
  79.             if( copyV[i] != copyV[i-1] )
  80.                 m[ copyV[i] ] = ch++;
  81. //        for( int i = 0 ; i < crypto.size() ; i++ )
  82. //            cout<<m[ copyV[i] ]<<" "<<copyV[i]<<endl;
  83.         for( int i = 0 ; i < crypto.size() ; i++ )
  84.             cout<<m[ crypto[i] ];
  85.         cout<<endl;
  86.     }
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement