生活随笔
收集整理的這篇文章主要介紹了
calfcamel 的 2333
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題面描述:
為祝賀新一批的研究生入學,隊長讓大家為新人命題訓練其程序設計能力。有人
問隊長能不能黑,隊長說可以黑但是不能黑那啥。大家很失望 2333,于是
calfcamel 決定出一道 2333 的題目。給你一個小于 60 位的整數 p,求大于 p 的最
小的數 p1,使得 p1 中包含數 2333。
輸入數據:
輸入數據的第一行為一個正整數 T,表示有 T 組數據。隨后的 T 行中每行包括一
個小于 60 位的整數 p (T <= 50, 1 <= p <10^60,即 10 的 60 次方)。
輸出數據:
對每組輸入數據單獨輸出一行結果, 第 x 行結果形如“Case #x: a”, 其中 x 為組
號,從 1 開始, a 為對應的結果。
樣例輸入:
2
100
1000000000000
樣例輸出:
Case #1: 2333
Case #2: 1000000002333
這道題考慮不周全,結果運行有問題
程序源碼:
#include <iostream>
#include<string>
using namespace std;int StrFind(char str[], char key[]);
int StrFindOut(char str[], char key[]);int main() {int nId= 0;char str[60] = { 0 };char out[50][60];char key[] = "2333";cin >> nId;for (int i = 0; i < nId; i++) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');cin.get(out[i], 60);//cout << out[i] << endl;}for (int i = 0; i < nId; i++) {cout << "Case #" << i+1 << ": ";StrFindOut(out[i], key);//switch ()) {//case 0: {cout << 2333 << endl; break; }//case 1: {cout << atoi(out[i]) + 10000 << endl; break; }//case 2: {cout << atoi(out[i]) + 1 << endl; break; }//case 3: {cout << (atoi(out[i])/10000)*10000 + 2333 << endl; break; }//default: {; }//}}system("pause");return 0;
}int StrFind(char str[], char key[])
{int l1, l2, i, j, flag;j = 0;flag = 0;l1 = strlen(str);l2 = strlen(key);if (l1 < l2) {return 0;}for (i = 0; i < l1; i++){if (str[i] == key[j]) {flag ++;if(j<l2)j++;}if (flag == 4&& i == (l1-1)) {return 1; break; }if (flag == 4 && i < (l1 - 1)) {return 2;break;}}return 3;
}int StrFindOut(char str[], char key[])
{int l1, l2, i, j, flag;j = 0;flag = 0;l1 = strlen(str);l2 = strlen(key);char chCopy1[60] = { 0 };char chCopy2[4] = { 0 };if (l1 < l2) {cout << 2333 << endl;return 0;}for (i = 0; i < l1; i++){if (str[i] == key[j]) {flag++;if (j<l2)j++;}if (flag == 4 && l1 == 4) {cout << "1"<<str << endl;return 1;break;}if (flag == 4 && i == (l1 - 1)) {str[l1 - 5] = str[l1 - 5] + 1;cout << str << endl;return 1;break;}if (flag == 4 && i < (l1 - 1)) {str[l1 - 1] = str[l1 - 1] + 1;cout << str << endl;return 2;break;}}strncpy_s(chCopy1, str, (l1 - 5));chCopy2[0] = str[l1-4];chCopy2[1] = str[l1-3];chCopy2[2] = str[l1-2];chCopy2[3] = str[l1-1];cout << chCopy1;if (atoi(chCopy2) < 2333) {cout << str[l1 - 5]<< "2333" << endl;}else {str[l1 - 5] = str[l1 - 5] + 1;cout << str[l1 - 5]<< "2333" << endl;}return 3;
}
總結
以上是生活随笔為你收集整理的calfcamel 的 2333的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。