/ *
問題の説明
列のN個の長さを考えると、列のこの数が大きい順に配置されています。1 <= N <= 200
入力フォーマット
最初の行の整数n。
2行目は含まnは整数は、数が、10,000未満の整数の絶対値のそれぞれをソートします。
出力フォーマットの
出力ライン、ソートされた出力の昇順に列の数。
サンプル入力
。5
。8 4. 3. 6. 9
サンプル出力
34689
* /
#include <stdio.h>
int main(){
int n;
int i,j;
scanf ( "%d",&n );
int m[n];
for ( i =0;i < n; i ++ ) {
scanf ( "%d",&m[i] );
}
for ( i = 0;i < n; i ++ ) {
for ( j =0;j < i; j ++) {//1 3 4 2
if ( m[i] < m[j]) {
int temp = m[i];
m[i] = m[j];
m[j] = temp;
}
}
}
for ( i = 0;i < n;i ++ ) {
printf ( "%d ",m[i]);
}
return 0;
}
/ *
問題の説明
123321は、それが同じ右から、リード左から読み込まれ、非常に特別な番号です。
、正の整数nを入力し、すべてのそのようなプログラミング5および6進数、数字を検索し、nは全てが等しい満たします。
入力フォーマットの
入力ラインは、正の整数nを含んでいます。
出力形式
条件を満たす整数、ライン毎の各整数小から大出力するためです。
入力サンプル
52
サンプル出力
899 998
989 989
998 899
データサイズと表記
1 <= N <= 54。
* /
#include <stdio.h>
int main() {
int num;
int i;
int a,b,c,d,e,f;
scanf ( "%d",&num );
for ( i = 10000; i < 1000000; i ++ ) {
if ( i < 100000 ) {
a = i/10000;
b = i%10000/1000;
c = i%1000/100;
d = i%100/10;
e = i%10;
if ( a+b+c+d+e == num && a == e && b == d ) {
printf( "%d\n", i );
}
}
else {
a = i/100000;
b = i%100000/10000;
c = i%10000/1000;
d = i%1000/100;
e = i%100/10;
f = i%10;
if ( a+b+c+d+e+f == num && a == f && b == e && c ==d ) {
printf( "%d\n", i );
}
}
}
return 0;
}
/ *
問題の説明
1221年にはそれがすべてのように4桁の10進数をプログラミング求めて、読んで、左から右などから読み込まれ、非常に特別な番号です。
出力フォーマットの
昇順で条件を満たし、出力4つの10進数。
* /
#include <stdio.h>
int main() {
int n = 0;
int i,j;
int a,b,c,d;
int num[1000];
for ( i = 1000; i < 10000; i ++ ) {
a = i/1000;
b = i%1000/100;
c = i%100/10;
d = i/10;
if ( a == d && b == c ) {
num[n++] = i;
printf ( "%d");
}
}
for ( i = 0; i < n; i ++ ) {
for ( j = 0; j < i; j ++ ) {
if ( num[i] < num[j] ) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
for ( i = 0; i < n; i ++ ) {
printf( "%d ", num[i] );
}
return 0;
}
/ *
153は、立方晶と各桁と同じである非常に特別な番号、すなわち、153 = 1である。1 1 + 5 。5 5 + 3 3 3 すべての3つの小数の需要のプログラミングは、この条件を満たすことができます。
出力フォーマット
行あたり各番号の昇順に条件を満たす出力3進数。
* /
#include <stdio.h>
int main() {
int i;
int a,b,c;
for ( i = 100; i < 1000; i ++ ) {
a = i/100;
b = i%100/10;
c = i%10;
if ( ( a*a*a + b*b*b + c*c*c ) == i ) {
printf ( "%d\n", i );
}
}
return 0;
}
/ *問題説明
パスカルの三角形として知られているトライアングル、その最初の行I + 1(+ b)があるI-膨張係数。
それは重要な特性である:各数値は、一緒にその2つの肩番号に等しい三角形。
私たちは、最初の4行トライアングルの下に与えられています。
1
。1 1
1 2 1
。1. 3. 3. 1
N与え、第n行、それを出力します。
入力フォーマットの
数nを含む入力。
出力フォーマットの
最初のn行トライアングルの出力。最初の行から各行が一つの中間スペースを使用し、順次出力数です。前に余分なスペースを印刷しないでください。
入力サンプル
4
サンプル出力
1
。1 1
1 2 1
。1. 3. 3. 1
のデータサイズと表記
1 <= N <= 34。* /
#include <stdio.h>
#define N 100
int main() {
int n;
int num[N][N];
int i,j,k;
scanf ( "%d",&n );
for ( i = 0; i <= n; i ++ )
num[i][1] = num[i][i] = 1;
for ( i=3; i <= n; i ++ )
for( j=2; j <= i-1; j ++ )
num[i][j] = num[i-1][j-1] + num[i-1][j];
for ( i=1; i <= n; i ++ ) {
for(j=1;j<=i;j++) /*j<=i的原因是不输出其它的数,只输出我们想要的数*/
printf("%d ",num[i][j]);
printf("\n"); /*当一行输出完以后换行继续下一行的输出*/
}
printf("\n");
return 0;
}
/ *
問題の説明
与えられたn列の数を含む整数であり、最初のいくつかの最初の発生の列の最初の整数を尋ねます。
入力フォーマットは、
最初の行は整数nを含んでいます。
第二行は列の所定の数の非負整数nを含み、各列数は、10,000以下です。
第3段目は、整数A、検索対象の番号を含みます。
出力フォーマット
番号が列に表示された場合、それはそうでなければ出力、出力位置(位置番号は1から始まり)の最初の発生である-1。
サンプル入力
。6
。1. 8 9 4. 3. 9
。9
サンプル出力
2
のデータサイズと表記
1 <= N <= 1000。
* /
#include <stdio.h>
int main() {
int m,n,i,findNum;
int flag = 0;
scanf ( "%d", &m );
int num[m];
for ( i = 0; i < m; i ++ ) {
scanf ( "%d", &n );
num[i] = n;
}
scanf ( "%d", &findNum );
for ( i = 0; i < m; i ++ ) {
if ( findNum == num[i] ) {
flag = 1;
printf( "%d", i+1 );
break;
}
}
if ( flag == 0 ) {
printf ( "-1" );
}
return 0;
}
/ *
問題の説明
番号を与えられ、N、Nの最大値、最小値の数を見つけるために、そして。
入力フォーマット
nは整数最初の行動の、値の数。
第二行は10,000以上Nの数、各数の絶対値が与えられ、数nを有しています。
出力フォーマット
出力整数の3行。最初の行は、これらの数の最大値を表し、第二行はこれらの数の最小値を表し、これらの数字は、第三の行を表し、。
サンプル入力
。5
。1. 4. 3 -2。5
出力例
5
-2
。11
データサイズと表記
1 <= N <= 10000。
* /
#include <stdio.h>
int main() {
int n,i,m,maxNum,minNum,addNum = 0;
scanf ( "%d", &n );
int num[n];
for ( i = 0; i < n; i ++ ) {
scanf ( "%d", &m );
num[i] = m;
}
maxNum = num[0];
minNum = num[0];
for ( i = 1; i < n; i ++ ) {
if ( num[i] > maxNum ) {
maxNum = num[i];
}
}
for ( i = 1; i < n; i ++ ) {
if ( num[i] < minNum ) {
minNum = num[i];
}
}
for ( i = 0; i < n; i ++ ) {
addNum += num[i];
}
printf( "%d\n",maxNum );
printf( "%d\n",minNum );
printf( "%d\n",addNum );
return 0;
}
/ *
問題記載
文字を用いた例が下に与えられている、いくつかの美しいグラフィックで構成することができます。
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
これは、このルールのパターンを見つけ、パターン列5~7であり、n行m列のパターンを出力します。
入力形式の
二つの整数nとmを含む入力ラインは、それぞれあなたが出力ラインパターンをする列の数を表します。
出力フォーマットの
あなたのパターンのための出力n行、各m文字、。
入力サンプル
57
サンプル出力
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABCの
データサイズと表記
1 <= N、M <= 26。
* /
#include <stdio.h>
int main() {
int row; // 行
int col; // 列
int index = 0; // 控制索引
char c,r,s;
scanf ( "%d %d", &row,&col );
for ( c = 'A'; c < 'A' + row; ++c ) {
// 先输出前半部分 A 之前 倒序 如 第三行 输出CB
for ( r = c; r > 'A' && index < col; --r ) {
printf ( "%c", r );
index++ ;
}
// 然后输出 后半部分 A开始的 为列数减去index有已输出的
for ( s = 'A'; s < 'A' + col - index; ++ s ) {
printf ( "%c", s );
}
index = 0;
printf ( "\n" );
}
return 0;
}
/ *
問題の説明
5の01ビット長の文字列のため、各ビットは、可能な32の合計は0または1であってもよいです。彼らは、最初のいくつかのとおりです。
00000
00001
00010
00011
00100
32出力が小さいから大へ順次ストリング01によって要求されました。
入力形式
存在なし入力質問。
出力フォーマット
ストリング5の各線路01の長さの昇順で出力線32、。
サンプル出力
00000
00001
00010
00011
<省略し、次の部品>
* /
#include <stdio.h>
int main() {
int a,b,c,d,e;
for ( a = 0; a < 2; a ++ )
for ( b = 0; b < 2; b ++ )
for ( c = 0; c < 2; c ++)
for ( d = 0; d < 2; d ++ )
for ( e = 0; e < 2; e ++ )
printf ( "%d%d%d%d%d\n",a,b,c,d,e );
return 0;
}
/ *
問題の説明
年を決定するために年を考えるには、うるう年ではありません。
次のいずれかの条件が満たされると、今年はうるう年であります:
-
年は4の倍数でなく、100の倍数ではありません。
-
年は、400の倍数です。
その他の年はうるう年ではありません。
入力形式の
入力は、現在の年を表し、整数yを含んでいます。
出力フォーマット
出力ライン、与えられた年がうるう年の場合、出力はい、そうでない場合は出力することはできません。
注:結果として指定された質問の文字列をエクスポートすると(この質問yesまたはnoとして、あなたは厳密に与えられた場合の質問を実行する必要があり、間違った場合は、ポイントを獲得しません。
サンプル入力
2013
サンプル出力
なし
サンプル入力
2016
サンプル出力
はい
合意のデータサイズ
1990 <= Y <= 2050。
* /
#include <stdio.h>
int main() {
int year;
scanf ( "%d", &year );
if( year % 4 == 0 && year % 100 != 0 ){
printf ( "yes" );
}
else if ( year % 400 == 0 ) {
printf ( "yes" );
}
else {
printf ( "no" );
}
return 0;
}
/ *
問題の説明
入力の正の整数nは、出力のn!の値。
前記N- !. 1 = 2。3のn * ... *。
アルゴリズム記述は、
N!可能大きいが有限の整数の範囲の表現はコンピュータであることができ、この方法は、高精度計算を使用する必要があります。アレイの使用は、大きな整数aを表すために、A [0]ビット、A [1]で表される10を表し、等々 。
整数kで配列Aの各要素はK、対応する音符処理キャリーによって乗算さとなる乗算されます。
まず、図1に示す値!nを求めるために、すなわち、nに乗算3で、次いで2により、設定されています。
入力形式の
入力は、正の整数N、N <= 1000を含んでいます。
出力フォーマット
出力のn!正確な値。
入力サンプル
10
サンプルの出力
3628800
* /
解決策1:コンテストに少ない計算量を適用渡しません
#include <stdio.h>
int main() {
int num;
int i,temp = 1;
scanf ( "%d", &num );
temp = num;
for ( i = temp-1; i > 0; i -- ) {
num = num*i;
}
printf ( "%d", num );
return 0;
}
対処方法2:による競争
#include <stdio.h>
int main()
{
int n;
int factorial[3000] = { 0 };
int len;
int i, j, carry, dump;
scanf("%d", &n);
factorial[0] = 1;
len = 1;
for (i = 2; i <= n; ++i)
{
carry = 0;
for (j = 0; j < len; ++j)
{
dump = (factorial[j] * i + carry) / 10;
factorial[j] = (factorial[j] * i + carry) % 10;
carry = dump;
}
while (carry > 0)
{
factorial[j] = carry % 10;
carry /= 10;
++j;
}
len = j;
}
for (i = len - 1; i >= 0; --i)
printf("%d", factorial[i]);
return 0;
}