[旧]メモり。メモる。(お引越ししました→http://hatone.hateblo.jp/)

2010-02-14

[][]13問目

#include<iostream>
using namespace std;

int main(){

  int num[100][50];
  int buf[50];
  int mod[50];
  int ans[50];
  char c;
  
  for(int i=0;i<100;i++)
    {
      for(int p=0;p<50;p++)
	{
	  cin>>c;
	  num[i][p]=c-'0';

	  buf[p]=0;
	  mod[p]=0;
	  ans[p]=0;
	}
    }

  for(int i=0;i<50;i++)
    {
      for(int p=0;p<100;p++)
	{
	  mod[49-i]+=num[p][49-i];
	}

      mod[49-i]+=buf[49-i];
      ans[49-i]=mod[49-i]%10;
      buf[48-i]=mod[49-i]/10;
    }
  
  cout<<"ans"<<mod[0]<<endl;

  for(int i=1;i<50;i++)
    {
      cout<<i<<":"<<ans[i]<<endl;
    }
  
 


  return 0;


}

2010-01-24

[][]8問目。

Find the greatest product of five consecutive digits in the 1000-digit number.

73167176531330624919225119674426574742355349194934

96983520312774506326239578318016984801869478851843

85861560789112949495459501737958331952853208805511

12540698747158523863050715693290963295227443043557

66896648950445244523161731856403098711121722383113

62229893423380308135336276614282806444486645238749

30358907296290491560440772390713810515859307960866

70172427121883998797908792274921901699720888093776

65727333001053367881220235421809751254540594752243

52584907711670556013604839586446706324415722155397

53697817977846174064955149290862569321978468622482

83972241375657056057490261407972968652414535100474

82166370484403199890008895243450658541227588666881

16427171479924442928230863465674813919123162824586

17866458359124566529476545682848912883142607690042

24219022671055626321111109370544217506941658960408

07198403850962455444362981230987879927244284909188

84580156166097919133875499200524063689912560717606

05886116467109405077541002256983155200055935729725

71636269561882670428252483600823257530420752963450

#include<iostream>

using namespace std;
char str[]="7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";

int main(){	
	int i=0;//1000桁目、100桁目、10桁目、1桁目をカウントする
	int num=1;
	int max=0;

	for(int p=0;str[p+4]!='\0';p++) {
		for(int m=10000; m>=1; m/=10,i++) 
			{
				cout<<(str[i+p]-'0');
				num*=(str[i+p]-'0');
			}
		cout<<endl;
		cout<<num<<endl;
		if(max < num) max=num; 
		i=0;
		num=1;
	}
	cout<<max<<endl;
}

2009-06-04

[]Numeral System

文字のサイズ知りたいときー。

string扱いたいときー。

cppなんですね。

ちょっと解答みながらやってしまいました。ごめんなさい。


#include <iostream>
using namespace std;

char c[4] = {'m', 'c', 'x', 'i'};
int v[4] = {1000, 100, 10, 1};

string str="9m8c7xi c2x8i";



int main() {
  int n=str.size(); 
  int sum = 0;
  int d = 1;

  for (int i=0; i<n; i++) {
    if ('0' <= str[i] && str[i] <= '9') {
cout << str[i]<< endl;
      d = str[i]-'0';
cout << d<< endl;
    } else {
      for (int j=0; j<4; j++) {
cout << str[i]<< endl;
        if (str[i] != c[j]) { continue; }

        sum = (v[j] * d)+ sum;
        d = 1;
        break;
            }
       }
     }



    for (int i=0; i<4; i++) {
      int d = 0;
      while (sum >= v[i]) {sum=sum-v[i]; 
    d++;}
      if (d > 1) { cout << d; }
      if (d > 0) { cout << c[i]; }
    }




  
  return 0;
}

2009-05-09

[]C++でマルチスレッドプログラミング

スレッド1とスレッド2を展開させてみてます。

タイミングはsleep()の中身でいじるものなんだろうか…?

#include <pthread.h>
#include <stdio.h>

void* thread1(void* pParam); //スレッド1
void* thread2(void* pParam); //スレッド2
int i=0;

int main(int argc,char *argv[]){
  pthread_t tid1,tid2; //スレッド識別関数
  //スレッドの作成
  pthread_create(&tid1,NULL,thread1,NULL);
  pthread_create(&tid2,NULL,thread2,NULL);

  //スレッド終了待ち
  pthread_join(tid1,NULL);
  pthread_join(tid2,NULL);
  return 0;
}

//スレッド1
void* thread1(void* pParam){
  i=3;//スレッド1でi=3する
  while(1){
    printf("hello\n"); 
    sleep(1);
  }
}

//スレッド2
void* thread2(void* pParam){
  while(1){
    printf("world\n");
    printf("%d",i);//スレッド1でi=3されたやつがスレッド2にちゃんと適用されてる。
    sleep(3);
  }
}

2009-04-20

ubuntuでOpenCV

ubuntu+うちのミニノート+OpenCV。

とりあえず、表示するだけです。

MacでOpenCV(iSightキャプチャ)を参考にしました。


  • 環境のインストール

sudo su

[パスワード]

apt-get install libcv-dev

apt-get install libcv1

apt-get install libcvaux-dev

apt-get install libcvaux1

apt-get install libhighgui-dev

apt-get install libhighgui1

apt-get install opencv-doc

  • サンプルソース

#include <cv.h>

#include <highgui.h>

#include <ctype.h>

#include <stdio.h>

int main(int argc, char ** argv) {

CvCapture *capture = 0;

IplImage *src_img = 0;

IplImage *dst_img;


// double w = 320, h = 240;

int c;

capture = cvCreateCameraCapture(0);

// キャプチャサイズ設定

// この設定は利用するカメラに依存する ->isightではサイズが変わらないのでひとまずコメントアウト

// cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, w);

// cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, h);

cvNamedWindow("Capture", CV_WINDOW_AUTOSIZE);

// カメラから画像をキャプチャする

while (1) {

src_img = cvQueryFrame(capture);

// src_img と dst_imgの間で行いたい画像処理を実施する

// まずは何もせず画面に表示

dst_img = src_img;

cvShowImage("Capture", dst_img);

c = cvWaitKey(33);

if (c == 0x1b) {

// Esc入力で終了

break;

} else if (c == 0x73) { // 's'キー入力

}

}

cvReleaseCapture(&capture);

cvDestroyWindow("Capture");

return 0;

}

  • makefile

SRC = hello.c

DST = hello

prefix=/usr

INCPATH=$(prefix)/include

LIBPATH=$(prefix)/lib

OPT= -lcv -lcvaux -lcxcore -lhighgui

CC=g++ -O

CFLAGS= -I$(INCPATH)/opencv

LDFLAGS=-L. -L$(LIBPATH)


all:

$(CC) $(SRC) -o $(DST) $(CFLAGS) $(LDFLAGS) $(OPT)


make

./hello