codeforces A. Jeff and Digits 解题报告
生活随笔
收集整理的這篇文章主要介紹了
codeforces A. Jeff and Digits 解题报告
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://codeforces.com/problemset/problem/352/A
題目意思:給定一個只有0或5組成的序列,你要重新編排這個序列(當然你可以不取盡這些數字),使得這個序列盡可能地大,并且能被90除盡。
???? 做這道題目,是多次調試本場比賽的B,完全不成功后回頭再做的,一開始什么思路都沒有,因為覺得是考純數學,直接看B......怎么說,很大程度是靠直覺的。只知道,這個序列肯定是這種形式:5xx...0?或者像題目所說的特殊情況:0(不過前提是0的個數不為0)。其他就不得而知了。然后在紙上比劃了下,發現能被90除盡的序列,5的個數必須滿足是9的倍數:9,18... 。至于如何證明,就希望聰明的讀者指導一下了。
????
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 using namespace std; 6 7 int cnt[10]; // 統計0和5的個數 8 9 int main() 10 { 11 int i, n, tmp, flag; 12 while (scanf("%d", &n) != EOF) 13 { 14 memset(cnt, 0, sizeof(cnt)); 15 for (i = 0; i < n; i++) 16 { 17 scanf("%d", &tmp); 18 cnt[tmp]++; 19 } 20 flag = 0; 21 int len = cnt[5] / 9; 22 // printf("len = %d\n", len); 23 if (len >= 1 && cnt[0] != 0) // 必須兩個條件同時滿足,這個序列5的個數是9的倍數,且保證個位數必須為0 24 { 25 flag = 1; 26 for (i = 0; i < len * 9; i++) 27 printf("5"); 28 for (i = 0; i < cnt[0]; i++) 29 printf("0"); 30 printf("\n"); 31 } 32 if (!flag && cnt[0] == 0) 33 printf("-1\n"); 34 else if (!flag && cnt[0] != 0) // 題目認為0也能被90除盡 35 printf("0\n"); 36 } 37 return 0; 38 }
?
轉載于:https://www.cnblogs.com/windysai/p/3352132.html
總結
以上是生活随笔為你收集整理的codeforces A. Jeff and Digits 解题报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绘画艺术是谁画的啊?
- 下一篇: linux if 命令判断条件总结