2014年6月18日 星期三

powerpoint VBA -- 自動調整位置

Public Sub test()
  For Each sl In ActivePresentation.Slides
     sl.Shapes(1).Top = 40
     sl.Shapes(1).Left = 50
     
     sl.Shapes(2).Top = 150
     sl.Shapes(2).Left = 50
  Next
End Sub


2014年6月17日 星期二

dp - 最大連續元素和

#include <iostream>

using namespace std;

int main()
{
    int n;
    int a[100];
    while (cin>>n)
    {
        for (int i=0;i<n;i++)
            cin >> a[i];

        int sMax = 0;
        for (int i=0;i<n;i++)
        {
             int curSum=a[i];
             for (int j=i+1;j<n;j++)
             {
                curSum = curSum + a[j];
                if (sMax < curSum)
                    sMax = curSum;
             }
        }
        cout << sMax<<endl;
    }
    return 0;
}

2014年6月16日 星期一

動態規劃

#include <cstdlib>
#include <iostream>
using namespace std;

long long int t[100];

long long int f(long long int n)
{
  if (t[n]!=0) return t[n];
  if (n <=2)
  {
           t[n] = n;
           return t[n];
  }
  else
  {
     t[n] = f(n-1)+f(n-2);
     return t[n];
  }
}

int main()
{
    memset(t,0,100*sizeof(t[0]));
    long long int n;
    while (cin >> n)
       cout << f(n) << ' ' << f(f(n)%n) << endl;
}


1000 !

#include <cstdlib>
#include <iostream>

using namespace std;
int a[3000];

int n_to_array(int n)
{
  int j=0;
  while (n>0)
  {
       a[j] = n%10;
       n = n/10;
       j++;
  }
}

int array_mul(int n)
{
    int c[3000];  
    memset(c,0,3000*sizeof(c[0]));
    for (int i=0;i<3000;i++)
    {
       if (i==0)
          a[i] = a[i] * n;
       else
          a[i] = a[i] * n+c[i-1];
       c[i] = a[i]/10;
       a[i] = a[i]%10;
    }
}

int out_array(int *a)
{
   int i=3000-1;
   while (a[i] == 0)
     i--;
   while (i>=0)
   {
      cout << a[i];
      i--;
   }
   cout << endl;
 
}

int main()
{

    int n;  
    while ( cin >> n)
    {
       memset(a,0,3000*sizeof(a[0]));
       a[0]=1;
       //n_to_array(1);
       for (int i=1;i<=n;i++)
           array_mul(i);
       out_array(a);
    }
 
    //system("PAUSE");
    return EXIT_SUCCESS;
}


2014年6月10日 星期二

大數乘法

#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int mul(int *n1,int *n2,int *n3)
{
 for (int i=0;i<100;i++)
    {
        for (int j=0;j<100;j++)
        {
            n3[i+j] =n3[i+j]+ n1[j] * n2[i];
            if (n3[i+j]>9)
            {
               n3[i+j+1] =n3[i+j+1]+ n3[i+j]/10;
               n3[i+j]=n3[i+j]%10;
             }
        }      
    }  
}

int toBig(string s,int *n)
{
    int  x=0;
    for (int i=s.length()-1 ;i>=0;i--)
    {
        n[x]=s[i]-'0';
        x++;
    }
}

int outResult(int *n)
{
    int k=99;
    while (n[k]==0)
       k--;
    for (int i=k;i>=0;i--)
       cout << n[i];
    cout << endl;
}

int main()
{
    string s1,s2;
    int  n1[100], n2[100], n3[100];
    memset(n1,0,100*sizeof(n1[0]));
    memset(n2,0,100*sizeof(n1[0]));
    memset(n3,0,100*sizeof(n1[0]));
    cin >> s1>>s2;
 
    toBig(s1,n1);
    toBig(s2,n2);
 
    mul(n1,n2,n3);
    outResult(n3);
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

大數乘法

#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    string s1,s2;
    int  n1[100], n2[100], n3[100];
    memset(n1,0,100*sizeof(n1[0]));
    memset(n2,0,100*sizeof(n1[0]));
    memset(n3,0,100*sizeof(n1[0]));
    cin >> s1>>s2;
    int x=0;
    for (int i=s1.length()-1 ;i>=0;i--)
    {
        n1[x]=s1[i]-'0';
        x++;
    }
    x=0;
    for (int i=s2.length()-1 ;i>=0;i--)
    {
        n2[x]=s2[i]-'0';
        x++;
    }  
    for (int i=0;i<100;i++)
    {
        for (int j=0;j<100;j++)
        {
            n3[i+j] =n3[i+j]+ n1[j] * n2[i];
            if (n3[i+j]>9)
            {
               n3[i+j+1] =n3[i+j+1]+ n3[i+j]/10;
               n3[i+j]=n3[i+j]%10;
             }
        }      
    }
    int k=99;
    while (n3[k]==0)
       k--;
    for (int i=k;i>=0;i--)
       cout << n3[i];
    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


大數加法

#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    string s1,s2;
    int  n1[100], n2[100], n3[100];
    memset(n1,0,100*sizeof(n1[0]));
    memset(n2,0,100*sizeof(n1[0]));
    memset(n3,0,100*sizeof(n1[0]));
    cin >> s1>>s2;
    int x=0;
    for (int i=s1.length()-1 ;i>=0;i--)
    {
        n1[x]=s1[i]-'0';
        x++;
    }
    x=0;
    for (int i=s2.length()-1 ;i>=0;i--)
    {
        n2[x]=s2[i]-'0';
        x++;
    }  
    for (int i=0;i<100;i++)
    {
        n3[i] =n3[i]+ n2[i] + n1[i];
        if (n3[i]>9)
        {
           n3[i+1] =n3[i+1]+ n3[i]/10;
           n3[i]=n3[i]%10;
         }
    }
    int k=99;
    while (n3[k]==0)
       k--;
    for (int i=k;i>=0;i--)
       cout << n3[i];
    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


stringstream

  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. using namespace std;  
  5.   
  6. int main()  
  7. {  
  8.     string line;  
  9.     stringstream ss;  
  10.     string a;  
  11.     bool isFound = false;  
  12.     int i = 0;  
  13.     int findL;  
  14.     int findN;  
  15.     while (i<3 )  
  16.     {  
  17.         getline(cin, line);  
  18.         ss.clear();  
  19.         ss.str(line);  
  20.           
  21.         int j = 1;  
  22.         while (1)  
  23.         {  
  24.             ss >> a;  
  25.             if (ss.fail()) break;  
  26.             if (a == "BILL")  
  27.             {  
  28.                 isFound = true;  
  29.                 findN = j;  
  30.                 findL = i + 1;  
  31.             }  
  32.             j++;  
  33.         }  
  34.         i++;  
  35.     }     
  36.       
  37.     if (isFound == true)  
  38.         cout << findL << ' ' << findN << endl;  
  39.     else  
  40.         cout << "NO" << endl;         
  41.     return 0;  
  42. }  

sstream

  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. using namespace std;  
  5.   
  6. int main()  
  7. {  
  8.     string line;  
  9.     stringstream ss;  
  10.     int sum[3],a;  
  11.     for (int i = 0; i < 3; i++)  
  12.     {  
  13.         getline(cin, line);  
  14.         ss.clear();  
  15.         ss.str(line);  
  16.         sum[i] = 0;  
  17.         while (1)  
  18.         {  
  19.             ss >> a;  
  20.             if (ss.fail()) break;  
  21.             sum[i] += a;  
  22.         }  
  23.         //cout << sum[i] << endl;  
  24.     }     
  25.     int iMax = 0;  
  26.     for (int i = 1; i < 3;i++)  
  27.     if (sum[i]> sum[iMax])  
  28.         iMax = i;  
  29.     cout << iMax + 1 << ' '<< sum[iMax] << endl;  
  30.     return 0;  
  31. }  

2014年6月9日 星期一

cin.getline

  1. #include <iostream>  
  2. #include <string>  
  3. using namespace std;  
  4.   
  5. int main()  
  6. {  
  7.     char line1[100];  
  8.     char line2[100];  
  9.     char line3[100];  
  10.     while (cin.getline(line1,100) )  
  11.     {  
  12.         cin.getline(line2, 100);  
  13.         cin.getline(line3, 100);  
  14.   
  15.         cout << line3 << endl;  
  16.         cout << line1 << endl;  
  17.         cout << line2<< endl;  
  18.     }     
  19.             return 0;  
  20. }  

string to int

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main()
{
    string s1,s2,s3,s1a="",s2a="",s3a="";
    cin >> s1>>s2>>s3;
    for (int i=0;i<s1.length();i++)
        if (s1[i]>='0' && s1[i]<='9')
           s1a = s1a + s1[i];
     for (int i=0;i<s2.length();i++)
        if (s2[i]>='0' && s2[i]<='9')
           s2a = s2a + s2[i];
     for (int i=0;i<s3.length();i++)
        if (s3[i]>='0' && s3[i]<='9')
           s3a = s3a + s3[i];
    int n1,n2,n3;
    istringstream(s1a) >>n1;
    istringstream(s2a) >> n2;
    istringstream(s3a)  >>n3;
    cout << n1+n2+n3<< endl;

    return 0;
}

字元比對

  1. #include <iostream>   
  2. #include <string>   
  3. using namespace std;   
  4.   
  5. int main()   
  6. {   
  7.     string rstr, mstr;   
  8.     cin >> rstr >>mstr;   
  9.     int i=1,j=1;   
  10.     bool isOk = true;   
  11.     while (i<=rstr.length() && isOk == true)   
  12.     {   
  13.         while  (rstr[i]!= mstr[j] && j<=mstr.length())   
  14.         {   
  15.             j++;   
  16.         }   
  17.         if (rstr[i]==mstr[j])   
  18.         {   
  19.             i++;   
  20.             j++;   
  21.         }   
  22.         else  
  23.             isOk = false;   
  24.     }   
  25.     if (isOk == true)   
  26.       cout << "YES" << endl;   
  27.     else  
  28.         cout << "NO" << endl;   
  29.     return 0;   
  30. }  

2014年6月5日 星期四

  1. //String Sample
  2. #include <iostream>   
  3. #include <string>    
  4. using namespace std;   
  5. int main()   
  6. {   
  7.     string s;   
  8.     while (cin >> s)   
  9.     {   
  10.         for (int i =s.length()-1 ; i >= 0;i--)   
  11.         cout <<s[i];   
  12.         cout << endl;   
  13.     }   
  14.     return 0;   
  15. }  

2014年6月4日 星期三

//利用 setw 對齊例
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
cout << setw(3) << j << 'x' << i << '=' << setw(2) << j*i;
}

cout << endl;
}
}
return 0;
}


  1. //位數計算
  2. #include <iostream>  
  3. #include <cmath>  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.     double a,b;  
  8.     while (cin >> a>>b)  
  9.     {  
  10.         cout << (int)(b*log10(a))+1 << endl;  
  11.     }  
  12.     return 0;  
  13. }  

  1. //  小數點處理例
  2. #include <iostream>  
  3. #include <cmath>  
  4. #include <iomanip>  
  5. using namespace std;  
  6. int main()  
  7. {  
  8.     int x1,y1,x2, y2;  
  9.     while (cin >> x1 >> y1 >> x2 >> y2)  
  10.     {  
  11.         double ans = sqrt((double)(x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));  
  12.         cout.setf(ios::fixed, ios::floatfield);  
  13.         cout.precision(3);  
  14.         cout << ans << endl;  
  15.     }  
  16.     return 0;  
  17. }