JOJ 1007 문제 풀기.
1007: Triangles
Result
TIME Limit
MEMORY Limit
Run Times
AC Times
JUDGE
3s
8192K
7020
2611
Standard
A triangle can be made up out of dots, like the ones shown below:
The number of dots in each one is called a triangular number. More precisely, a number is said to be triangular if it is of the form ½ n(n+1). The numbers 1, 3, 6, 10, and 15 are all triangular.
Given a number, determine if it is triangular. If it is, draw the corresponding right triangle, if it is not, say so.
Input
A positive integer less than 2000. Each case will be on a separate line. A zero (0) denotes the end of input.
Output
The phrase “
Sample Input
3
4
6
0
Sample Output
3 is a triangular number.
*
**
4 is not a triangular number.
6 is a triangular number.
*
**
***
코드는 다음과 같습니다.
#include <iostream>
#include <queue>
#include <cmath>
using namespace std;
bool isTriangle(int n)
{
n = 2*n;
int srt = (int)sqrt(n);
if (srt * (srt + 1) == n)
return true;
return false;
}
void printTriangle(int n)
{
for (int i = 1 ; i <= n; i ++)
{
for(int j = 1; j <= i ; j ++)
cout<<"*";
cout<<endl;
}
}
int main()
{
queue<int> input;
int a;
while (cin>>a && a!=0)
{
input.push(a);
}
while (!input.empty())
{
if(isTriangle(input.front()))
{
cout << input.front() << " is a triangular number."<<endl;
printTriangle((int)sqrt(input.front()*2));
}
else
{
cout << input.front() << " is not a triangular number."<<endl;
}
input.pop();
}
return 0;
}
주요 문제 풀이 사고방식:만약 한 수가 삼각수라면 반드시 N=1/2*n(n+1)이 있기 때문에 2*N=n*(n+1)이 있다.
출시 가능: n
그리고 n*(n+1)==2*N이 있는지 확인하십시오. 만약 그렇다면 N은 삼각수입니다. 그렇지 않으면 삼각수가 아닙니다.
이것들을 알게 되면 위의 문제풀이 방향을 이해하기 어렵지 않을 것이다!!
부적당한 요청이 있으면 메시지를 남겨 주시고, 함께 토론하고, 함께 진보하세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cocos2d Lua 학습(一)ios에서 루아 함수 호출 및 전참 방법 lua 코드: 출력 결과: lua 호출 C++ 방법: add 함수: lua 코드: 출력 결과: 함수를 호출합니다. 함수를 호출하려면 다음 협의를 따르십시오. 우선, 호출할 함...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.