|
음... 이런거 해주시면 안되요...
숙제는 스스로 해야지요.
님이 쓰신 글 :
: 김도달 님이 쓰신 글 :
: : 컴퓨공학과 학생들 n명이 소풍을 가서 원모양으로 둘러 앉아 게임을 하려고합니다.
: :
: : 학생번호는 0번부터 n-1번까지이다.0번학생부터 숫자1부터 차례대로 부르면서 소수가 걸린학생은
: :
: : 박수를 치는방법이다. 학생의 수와 마지막에 부른수가 주어졌을때 특정 번호의 학생이 박수를 몇번쳤는지 알아보는 프로그램을작성해야됩니다.
: :
: : 5명의 학생들이 소수놀이를 하는경우 마지막으로 불린 수가 17이라면 1번학생은 몇번박수를 쳤을까를 알고싶을때 입력 예)5 17 1
: :
: : <입력조건>
: :
: : 학생수 n은 최소 2명 최대 1000명
: :
: : 부를수 있는 수 su의 범위는 1이상 n*n이하
: :
: : 학생의 번호 no는 0이상 n미만
: :
: : <입력 및 출력의 예>
: :
: : 5 17 1
: :
: : 1번 학생은 3번 박수를 쳤다
: :
: :
: :
: : 이문제좀 작성해주세요 도와주세요
: :
: : 추가로 알고리즘도 글로 표현해주시면 감사하겠습니다..ㅠ.ㅠ
: :
:
:
: #include <stdio.h>
: #include <vector>
:
: bool checkNum(int num)
: {
: if (num <= 1)
: return false;
:
: for (int i = 2; i <= num >> 1; ++i)
: {
: if (num % i == 0)
: return false;
: }
: return true;
: }
:
: int main(int argc, char** argv)
: {
: int nStudents, lastNumber, studentNumber;
:
: nStudents = 5;
: lastNumber = 17;
: studentNumber = 1;
:
: std::vector<int>arrStudent(nStudents);
:
: for (int n = 1; n <= lastNumber; ++n)
: {
: int sn = (n - 1) % nStudents;
: if (checkNum(n))
: ++arrStudent[sn];
: }
:
: printf("student[%d] = %d\n", studentNumber, arrStudent[studentNumber]);
: return 0;
: }
:
: 소수의 조건은 수학적으로 약수가 2개인 것을 만족하면 되는 간단한 정의이므로 설명은 생략.
:
|