演算法的樂趣c/c++ —— 1.1.1入門習題
阿新 • • 發佈:2018-12-26
宣告:摘選自“ 演算法競賽入門經典(第2版)”作者: 劉汝佳 / 陳鋒 ISBN:9787302291077
1,水仙花數
輸出100~999中的所有水仙花。若3位數ABC滿足ABC = A ,則稱其為水仙花數。例如
,所以153是水仙花數.C語言實現:
#include<stdio.h> int main() { /*定義輸入數字與個、十、百*/ int num, ge, shi, bai; scanf("%d", &num); ge = num % 100 %10; shi = num / 10 % 10; bai = num / 100; if(num == (bai*bai*bai + shi*shi*shi + ge*ge*ge)) { printf("%d", num); } else { printf("不是水仙花數!"); } return 0; }
2,韓信點兵
相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排,五人一排,七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人人了。輸入包含多組資料,每組資料包含3個非負整數a,b,c,表示每種隊形排尾的人數(a <3,b <5,c <7) ,輸出總人數的不小於10,不超過100.
樣例輸入:
2 1 6
2 1 3
樣例輸出:
案例1:41
案例2:無答案
#include<stdio.h> int main() { int a, b, c; scanf("%d%d%d", &a,&b,&c); for(int i=10; i<101; i++) { if(i%3 == a) { if(i%5 == b) { if(i%7 == c) { printf("%d", i); return 0 ; } } } } printf("No answer"); return 0; }
3,輸入正整數n≤20,輸出一個n層的倒三角形。例如,n = 5時輸出如下:
#include<stdio.h> int main() { int level; scanf("%d", &level); int num = level; for(int i=0; i<=level; i++) { for(int j=0; j<i; j++) { printf(" "); } for(int m=0; m<(2*num-1); m++) { printf("#"); } for(int n=0; n<i; n++) { printf(" "); } num--; printf("\n"); } return 0; }