標籤:
| NOIP201501金幣 |
| |
| 試題描述 |
國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣;之後兩天(第二天和第三天) ,每天收到兩枚金幣;之後三天(第四、五、六天) ,每天收到三枚金幣;之後四天(第七、八、九、十天) ,每天收到四枚金幣……;這種工資發放模式會一直這樣延續下去:當連續 N 天每天收到 N 枚金幣後,騎士會在之後的連續 N+1 天裡,每天收到 N+1 枚金幣。
請計算在前 K 天裡,騎士一共獲得了多少金幣。 |
| 輸入 |
輸入檔案名稱為 coin.in
輸入檔案只有 1 行,包含一個正整數 K,表示發放金幣的天數 |
| 輸出 |
輸出檔案名為 coin.out
輸出檔案只有 1 行,包含一個正整數,即騎士收到的金幣數 |
| 輸入樣本 |
| 1000 |
| 輸出樣本 |
| 29820 |
| 其他說明 |
| 資料範圍:對於 100%的資料,1 ≤ K ≤ 10,000 |
1 #include<iostream> 2 using namespace std; 3 int n,ans; 4 int main() 5 { 6 scanf("%d",&n); 7 int i=1,temp,k=1; 8 while(i<=n) 9 {10 ans+=k*k;11 temp=i;12 i=i+k+1;13 k+=1;14 }15 ans+=(n-temp)*k;16 printf("%d\n",ans);17 }View Code
| NOIP201502掃雷遊戲 |
| 難度層級:A; 已耗用時間限制:1000ms; Runspace限制:51200KB; 代碼長度限制:2000000B |
| 試題描述 |
掃雷遊戲是一款十分經典的單機小遊戲。 在 n 行 m 列的雷區中有一些格子含有地雷(稱之為地雷格) ,其他格子不含地雷(稱之為非地雷格) 。玩家翻開一個非地雷格時,該格將會出現一個數字——提示周圍格子中有多少個是地雷格。 遊戲的目標是在不翻出任何地雷格的條件下,找出所有的非地雷格。
現在給出n行m列的雷區中的地雷分布, 要求計算出每個非地雷格周圍的地雷格數。
註:一個格子的周圍格子包括其上、下、左、右、左上、右上、左下、右下八個方向上與之直接相鄰的格子。 |
| 輸入 |
輸入檔案第一行 是用一個空格隔開的 兩個整數n和m, 分別表示雷區的行數和列數。
接下來 n 行,每行 m 個字元,描述了雷區中的地雷分布情況。字元’*’表示相應
格子是地雷格,字元’?’表示相應格子是非地雷格。相鄰字元之間無分隔字元。 |
| 輸出 |
輸出檔案包含 n 行,每行 m 個字元,描述整個雷區。用’*’表示地雷格,用周圍
的地雷個數表示非地雷格。相鄰字元之間無分隔字元。 |
| 輸入樣本 |
輸入範例 1
3 3
*??
???
?*?
輸入範例 2
mine.in
2 3
?*?
*?? |
| 輸出樣本 |
輸出範例 1
mine.out
*10
221
1*1
輸出範例 2
mine.out
2*1
*21 |
| 其他說明 |
【資料說明】
對於 100%的資料,1≤n≤100,1≤m≤100 |
1 #include<iostream> 2 using namespace std; 3 int n,m; 4 int main() 5 { 6 cin>>n>>m; 7 char a[150][150]; 8 for(int i=0;i<=n+5;i++) for(int j=1;j<=m+5;j++) a[i][j]=‘?‘; 9 for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];10 for(int i=1;i<=n;i++)11 {12 for(int j=1;j<=m;j++)13 {14 int ans=0;15 if(a[i][j]==‘?‘)16 {17 if(a[i-1][j]==‘*‘) ans++;18 if(a[i-1][j-1]==‘*‘) ans++;19 if(a[i-1][j+1]==‘*‘) ans++;20 if(a[i][j-1]==‘*‘) ans++;21 if(a[i][j+1]==‘*‘) ans++;22 if(a[i+1][j-1]==‘*‘) ans++;23 if(a[i+1][j]==‘*‘) ans++;24 if(a[i+1][j+1]==‘*‘) ans++;25 cout<<ans;26 }27 else cout<<‘*‘;28 }29 cout<<endl;30 }31 }View Code
noip2015 普及組