碼蹄集網(wǎng)站地址:https://www.matiji.net/exam/ojquestionlist
目錄
MT1281 N的M次方
(1)題目
輸入正整數(shù)N(<1500),首先計(jì)算其逆序數(shù)M(比如12逆序后是21)。然后輸出N的M次方的最后3位數(shù)。
格式
輸入格式:
輸入正整數(shù)N
輸出格式:
輸出整型
樣例1
輸入格式:
12
輸出格式:
122
(2)參考代碼
#include<stdio.h>
int main()
{
int N;
scanf("%d", &N);
int temp = N, M = 0;
while (temp)
{
M = 10 * M + temp % 10;
temp /= 10;
}
temp = N;
N = 1;
for (int i=1;i<=M;i++)
{
N = (N * temp) % 1000;
}
printf("%d", N);
return 0;
}
MT1282 Disarium數(shù)
(1)題目
一個(gè)自然數(shù),如果每一位數(shù)的位數(shù)次冪之和等于該自然數(shù),則稱之為Disarium數(shù)。
比如:89=8+9 * 9。或者135 = 1 + 3 * 3 + 5 * 5 * 5
輸入一個(gè)正整數(shù)n,檢查它是否為Disarium數(shù),是則輸出YES否則輸出NO。不考慮0,負(fù)數(shù)或者其他特殊情況。
格式
輸入格式:
輸入為整型
輸出格式:
是則輸出YES否則輸出NO
樣例1
輸入:
175
輸出:
YES
(2)參考代碼
#include<stdio.h>
#include<math.h>
int main()
{
int N, count = 0, sum = 0;
scanf("%d", &N);
int temp = N;
while (temp)
{
temp /= 10;
count++;
}
temp = N;
for (int i=count;i>0;i--)
{
sum += pow(temp % 10, (double)i);
temp /= 10;
}
if (sum == N)
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
MT1283 區(qū)間Disarium數(shù)
(1)題目
一個(gè)自然數(shù),如果每一位數(shù)的位數(shù)次冪之和等于該自然數(shù),則稱之為Disarium數(shù)。
比如:89=8+99?;蛘?35 = 1 +3 3 +5* 5* 5
輸入整數(shù)區(qū)間,輸出區(qū)間(含邊界)內(nèi)所有的Disarium數(shù)。不考慮0,負(fù)數(shù)或者其他特殊情況。
格式
輸入格式:
輸入為整型,空格分隔
輸出格式:
輸出為整型,空格分隔
樣例1
輸入格式:
1 100
輸出格式:
1 2 3 4 5 6 7 8 9 89
(2)參考代碼
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, temp, count, Disarium;
scanf("%d %d", &a, &b);
for (int i=a;i<=b;i++)
{
temp = i;
Disarium = 0;
count = 0;
while (temp)
{
temp /= 10;
count++;
}
temp = i;
for (int j=count;j>0;j--)
{
Disarium += pow((double)(temp % 10), (double)j);
temp /= 10;
}
if (Disarium == i)
{
printf("%d ", Disarium);
}
}
return 0;
}
MT1284 快樂數(shù)
(1)題目
判斷一個(gè)正整數(shù)是否是快樂數(shù)字,如果一個(gè)數(shù)字能夠通過有限次快樂變換成為1,則是快樂數(shù)字。
快樂變換是對(duì)一個(gè)數(shù)字的每一位的平方數(shù)求和。例如:對(duì)于68 =6 6+88=100,
100 = 1* 1+0* 0+0*0= 1,因此68是快樂數(shù)字。輸入一個(gè)正整數(shù)n,檢查它是否為快樂數(shù),是則輸出YES否則輸出NO。不考慮0,負(fù)數(shù)或者其他特殊情況。
格式
輸入格式:
輸入為整型
輸出格式:
是則輸出YES,否則輸出NO
樣例1
輸入格式:
19
輸出格式:
YES
(2)參考代碼
#include<stdio.h>
#include<math.h>
int main()
{
int n, temp, sum;
scanf("%d", &n);
while (1)
{
sum = 0;
if (n == 1)
{
printf("YES");
break;
}
else if (n == 4)
{
printf("NO");
break;
}
while (n)
{
temp = n % 10;
n /= 10;
sum += pow((double)temp, 2.0);
}
n = sum;
}
return 0;
}
MT1285 忠實(shí)數(shù)
(1)題目
如果一個(gè)數(shù)是7的冪,或者能分解成7的不同冪的和,那么這個(gè)數(shù)就叫做忠實(shí)數(shù)。 例如49=49,8=1+7, 57=1+7+49。注意1可以看成7的0次方。輸入正整數(shù)N,判斷它是不是忠實(shí)數(shù),輸出YES或者NO。
格式
輸入格式:
輸入正整數(shù)N
輸出格式:
輸出YES或者NO
樣例1
輸入:
2457
輸出:
YES
備注
N 屬于正常int范圍
(2)參考代碼
#include<stdio.h>
int main()
{
int N;
scanf("%d", &N);
// if (N % 7 == 0 && N != 0)
// {
// printf("YES");
// }
// else if (N % 7 == 1)
// {
// printf("YES");
// }
// else
// {
// printf("NO");
// }
while (N / 7)
{
if (N % 7 == 0)
{
N /= 7;
}
else if (N % 7 == 1)
{
N = (N - 1) / 7;
}
else
{
printf("NO");
return 0;
}
}
if (N == 1)
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
MT1286 忠實(shí)數(shù)序列
(1)題目
如果一個(gè)數(shù)是7的冪,或者能分解成7的不同冪的和,那么這個(gè)數(shù)就叫做忠實(shí)數(shù)。 例如49=49,8=1+7, 57=1+7+49。注意1可以看成7的0次方。對(duì)忠實(shí)數(shù)進(jìn)行從小到大排序得到的序列是1 7 8 49 50…等等。
輸入正整數(shù)N,找到第N個(gè)忠實(shí)的數(shù)字。
格式
輸入格式:
輸入正整數(shù)N(N<1000)
輸出格式:
輸出整型
樣例1
輸入:
7
復(fù)制
輸出:
57
(2)參考代碼
#include<stdio.h>
int main()
{
int N;
scanf("%d", &N);
int i = 0, temp;
while (N)
{
i++;
temp = i;
while (temp / 7)
{
if (temp % 7 == 0)
{
temp /= 7;
}
else if (temp % 7 == 1)
{
temp = (temp - 1) / 7;
}
else
{
break;
}
}
if (temp == 1)
{
N--;
}
}
printf("%d", i);
return 0;
}
MT1287 ASCII值
(1)題目
輸入一個(gè)長(zhǎng)度為5的數(shù)組,數(shù)組元素均在0到9之間,請(qǐng)編寫一個(gè)函數(shù),把奇數(shù)項(xiàng)元素的值加上65,偶數(shù)項(xiàng)元素值加上97,把新元素的值看成是ASCII值,依次輸出他們對(duì)應(yīng)的字符,空格分隔。
格式
輸入格式:
輸入為整型,空格分隔
輸出格式:
輸出字符,空格分隔
樣例1
輸入:
0 1 2 3 4
輸出:
a B c D e
(2)參考代碼
#include<stdio.h>
int ASCII(int num, int i)
{
if (i % 2 == 0)
{
num += 97;
}
else
{
num += 65;
}
return num;
}
int main()
{
int a[5];
for (int i=0;i<5;i++)
{
scanf("%d", &a[i]);
}
for (int i=0;i<5;i++)
{
printf("%c ", (char)ASCII(a[i], i));
}
return 0;
}
MT1288 誰(shuí)在說(shuō)謊
(1)題目
張三說(shuō)李四在說(shuō)謊,李四說(shuō)王五在說(shuō)謊,王五說(shuō)張三和李四都在說(shuō)謊。編寫程序判斷這三人中到底誰(shuí)說(shuō)的是真話,誰(shuí)說(shuō)的是假話?
格式
輸入格式:
無(wú)
輸出格式:
輸出他們是否說(shuō)謊,如樣例所示。其中說(shuō)謊用“told a lie”,沒說(shuō)謊用的是“told the truth"
樣例1
輸入格式: 無(wú)
輸出格式:
zs told the truth.
ls told a lie.
ww told a lie.
(2)參考代碼
#include<stdio.h>
int main()
{
for (int x=0;x<=1;x++)
{
for (int y=0;y<=1;y++)
{
for (int z=0;z<=1;z++)
{
if (((x&&!y) || (!x&&y)) && ((y&&!z) || (!y&&z)) && ((z && !x && !y) || (!z && (x+y) != 0)))
{
printf("zs told %s.\n", x?"the truth":"a lie");
printf("ls told %s.\n", y?"the truth":"a lie");
printf("ww told %s.\n", z?"the truth":"a lie");
}
}
}
}
return 0;
}
MT1289 調(diào)和級(jí)數(shù)不等式
(1)題目
有一個(gè)調(diào)和級(jí)數(shù)不等式11<1+1/2+1/3+…+1/m<12,求滿足此不等式的m,m可能有多個(gè),輸出最小的一個(gè)。
格式
輸入格式:
無(wú)
輸出格式:
輸出為整型
樣例1
輸入:
無(wú)
輸出:
33617
(2)參考代碼
#include<stdio.h>
int main()
{
double sum = 0;
for (int i=1;;i++)
{
sum += (1.0 / (double)i);
if (sum > 11)
{
printf("%d", i);
return 0;
}
}
return 0;
}
MT1290 級(jí)數(shù)
(1)題目
編寫程序求級(jí)數(shù)前n項(xiàng)的和,其中n從鍵盤上輸入
格式
輸入格式:
輸入為整型
輸出格式:
輸出為實(shí)型
樣例1
輸入:
1
輸出:
0.400000
(2)參考代碼
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d", &n);
double sum = 0;
for (int i = 1; i <= n; i++)
{
sum += (pow(-1.0, (double)(i - 1)) * pow(2.0, (double)i)) / ((pow(2.0, (double)i) + pow(-1.0, (double)i)) * (pow(2.0, (double)(i + 1)) + pow(-1.0, (double)(i + 1))));
}
printf("%lf", sum);
return 0;
}
MT1291 級(jí)數(shù)II
(1)題目
編寫程序求級(jí)數(shù)前n項(xiàng)的和,其中n從鍵盤上輸入
格式
輸入格式:
輸入為整型
輸出格式:
輸出為實(shí)型
樣例1
輸入:
1
輸出:
0.230769
(2)參考代碼
MT1292 某級(jí)數(shù)
(1)題目
某級(jí)數(shù)的前兩項(xiàng)A(1)=1、A(2)=1,以后各項(xiàng)有如下關(guān)系:A(n)=A(n-2)+2A(n-1)。求依次對(duì)于整數(shù)M=100、1000和10000求出對(duì)應(yīng)的n值,使其滿足:S(n)<M且S(n+1)≥M。這里S(n)=A(1)+A(2)+…+A(n)。
格式
輸入格式:
無(wú)
輸出格式:
輸出為整型,空格分隔
樣例1
輸入格式:
無(wú)
輸出格式:
6 9 11
(2)參考代碼
#include<stdio.h>
int main()
{
int A[100] = {1, 1}, S[100] = {1, 2};
for (int i=2;;i++)
{
A[i] = A[i-2] + 2 * A[i - 1];
S[i] = S[i - 1] + A[i];
if (S[i-1] < 100 && S[i] >= 100)
{
printf("%d ", i);
}
else if (S[i-1] < 1000 && S[i] >= 1000)
{
printf("%d ", i);
}
else if (S[i] >= 10000)
{
printf("%d", i);
break;
}
}
return 0;
}
MT1293 字母統(tǒng)計(jì)
(1)題目
請(qǐng)編寫一個(gè)簡(jiǎn)單程序,從鍵盤輸入一行字符,直到輸入回車時(shí)結(jié)束。統(tǒng)計(jì)其中的字母?jìng)€(gè)數(shù)。
格式
輸入格式:
輸入字符型
輸出格式:
輸出整型
樣例1
輸入格式:
I have 3 cats.
輸出格式:
9
(2)參考代碼
#include<stdio.h>
int main()
{
char c;
int count = 0;
while ((c = getchar()) != '\n')
{
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
{
count++;
}
}
printf("%d", count);
return 0;
}
MT1294 從指定位置復(fù)制
(1)題目
輸入整行字符串(中間可能會(huì)有空格),將此字符串從第n個(gè)字符(從0開始計(jì)數(shù))開始的全部字符復(fù)制成為另一個(gè)字符串并輸出。不考慮不合理的輸入等特殊情況。
格式
輸入格式:
第一行輸入字符串,第二行輸入n,整型
輸出格式:
輸出字符串
樣例1
輸入:
sfdags
3
輸出:
ags
樣例2
輸入:
Hello world
2
輸出:
llo world
(2)參考代碼
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
gets(a);
int n;
scanf("\n%d", &n);
for (int i=0;i<strlen(a);i++)
{
if (i >= n)
{
printf("%c", a[i]);
}
}
return 0;
}
MT1295 指定位置插串
(1)題目
存在兩個(gè)字符串,實(shí)現(xiàn)在字符串s1中的指定位置n處(從0開始計(jì)數(shù))插入字符串s2。若n大于s1的長(zhǎng)度,則從s1末尾處接上s2字符串。
格式
輸入格式:
第一行輸入字符串s1,第二行輸入正整數(shù)n,第三行輸入字符串s2
輸出格式:
輸出字符串s1
樣例1
輸入:
Wendy c++
6
hate
輸出:
Wendy hate c++
(2)參考代碼
MT1296 字符串替換
(1)題目
編寫一個(gè)函數(shù),把字符串中所有的you替換為we并輸出。
格式
輸入格式:
輸入字符串
輸出格式:
輸出字符串
樣例1
輸入格式:
you are the best
輸出格式:
we are the best
(2)參考代碼
MT1297 位運(yùn)算符
(1)題目
使用位運(yùn)算符檢查n以內(nèi)的奇數(shù)和偶數(shù),n的值由鍵盤輸入
格式
輸入格式:
輸入正整數(shù)n(<100)
輸出格式:
分行輸出
樣例1
輸入格式: 5
輸出格式:
0 is even
1 is odd
2 is even
3 is odd
4 is even
5 is odd
(2)參考代碼
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
for (int i=0;i<=n;i++)
{
if (i & 1)
{
printf("%d is odd\n", i);
}
else
{
printf("%d is even\n", i);
}
}
return 0;
}
MT1298 小碼哥的煩惱
(1)題目
小碼哥抱怨說(shuō):“我才發(fā)現(xiàn),C語(yǔ)言里面居然沒有二進(jìn)制的輸出格式符,唉,誰(shuí)能幫我寫個(gè)函數(shù),實(shí)在這個(gè)功能?。俊?/p>
格式
輸入格式:
輸入一個(gè)十進(jìn)制正整數(shù)
輸出格式:
輸出對(duì)應(yīng)的二進(jìn)制
樣例1
輸入:
9
輸出:
1001
(2)參考代碼
#include<stdio.h>
void Bin(int num)
{
if (num / 2)
{
Bin(num / 2);
}
printf("%d", num % 2);
}
int main()
{
int n;
scanf("%d", &n);
Bin(n);
return 0;
}
MT1299 二進(jìn)制
(1)題目
輸入5個(gè)正整數(shù),將他們轉(zhuǎn)換成二進(jìn)制輸出。
格式
輸入格式:
輸入整型,空格分隔。
輸出格式:
輸出整型,每個(gè)一行。從低位往高位看,每四位空一位。
樣例1
輸入:
8 89 4 14 51
輸出:
1000
101 1001
100
1110
11 0011
(2)參考代碼
#include<stdio.h>
int main()
{
for (int i=0;i<5;i++)
{
int n, b[100], count = 0;
scanf("%d", &n);
while (n)
{
b[count++] = n % 2;
n /= 2;
}
while (count)
{
if ((count - 1) % 4 == 0)
{
printf("%d ", b[--count]);
}
else
{
printf("%d", b[--count]);
}
}
printf("\n");
}
return 0;
}
MT1300 奇數(shù)校驗(yàn)
(1)題目
輸入一個(gè)整數(shù)N,求其奇偶性。一個(gè)數(shù)字的奇偶性是指它對(duì)應(yīng)二進(jìn)制包含的1位的數(shù)量。如果該數(shù)字包含奇數(shù)個(gè)1,則該數(shù)字具有“奇校驗(yàn)”O(jiān)DD;如果該數(shù)字包含偶數(shù)個(gè)1,則該數(shù)字具有“偶校驗(yàn)”EVEN。比如13,其二進(jìn)制形式是1101,包含3個(gè)1,所以是奇校驗(yàn)。
格式
輸入格式:
輸入為整型
輸出格式:
輸出為〇DD或者EVEN
樣例1文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-733162.html
輸入格式:
9
輸出格式:
EVEN
(2)參考代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-733162.html
#include<stdio.h>
int main()
{
int n, N[100], count = 0;
scanf("%d", &n);
int count1 = 0, count0 = 0;
while (n)
{
N[count++] = n % 2;
n /= 2;
}
for (int i=0;i<=count;i++)
{
if (N[i] == 1)
{
count1++;
}
}
if (count1 % 2 == 1)
{
printf("ODD");
}
else
{
printf("EVEN");
}
return 0;
}
到了這里,關(guān)于算法競(jìng)賽入門【碼蹄集新手村600題】(MT1280-1300)C語(yǔ)言的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!