關於Vigenere爆0總結

爆0


考試經歷如下
首先,我用昨天的不定參數寫了一個debug

模板如下

#include<bits/stdc++.h>
using namespace std;
#define print(type,data) #data , type , data
#define CHAR 0
#define INT 1
#define LONG 2
#define LONG_LONG 3
#define FLOAT 4
#define DOUBLE 5
#define STRING 6
//定義類型
/*例子: #define MYTYPE 7 */
#pragma message("Define new type of debugable data here")

//添加類&結構體
/*例子: struct mytype{ ..... }; */
#pragma message("Define new class&struct here")

void debugPrint(int line,int dataNum,...){//follow as name-type-pointer
#ifndef ONLINE_JUDGE
	fprintf(stderr,"Debug message on line %d:\n",line);
	va_list dataPtr;
	va_start(dataPtr,dataNum);
#pragma message("Add temps here")
	/*添加臨時變量位置(供調用數據) 例子: mytype temp_mytype; */
	while(dataNum--){
		fprintf(stderr," \"%s\"",va_arg(dataPtr,const char*));
		switch(va_arg(dataPtr,int)){
			case CHAR:
				fprintf(stderr,"(char)=\'%c\'",va_arg(dataPtr,int));
				break;
			case INT:
				fprintf(stderr,"(int)=%d",va_arg(dataPtr,int));
				break;
			case LONG:
				fprintf(stderr,"(long)=%ld",va_arg(dataPtr,long));
				break;
			case LONG_LONG:
				fprintf(stderr,"(long long)=%lld",va_arg(dataPtr,long long));
				break;
			case FLOAT:
				fprintf(stderr,"(float)=%f",va_arg(dataPtr,double));
				break;
			case DOUBLE:
				fprintf(stderr,"(double)=%lf",va_arg(dataPtr,double));
				break;
			case STRING:
				fprintf(stderr,"(string)=\"%s\"",va_arg(dataPtr,char*));
				break;
#pragma message("Add new type to debug data here")
			/*添加數據類型處理代碼 例子: case MYTYPE: temp_mytype=va_arg(dataPtr,mytype); fprintf(stderr,"(mytype)= ..... ,temp_mytype); break; */ 
			default:
				fprintf(stderr,"(UNKNOW)=<WARNING:UNKNOW TYPE OF DATA>");
		}
		fprintf(stderr,"\n");
	}
	fprintf(stderr,"End debug message.\n\n");
#endif
}
//你的代碼
#define maxN 10000
void input(){

}

void solve(){

}

int main(){
#ifndef ONLINE_JUDGE
	freopen("filename.txt","r",stdin);//標準輸入重定向
	freopen("filename.dbg.txt","w",stderr);//錯誤輸出重定向(用來調試程序)
#endif
	input();
	solve();
	return 0;
}

這個玩意用法如下:

int i=10356;
char c='R';
char str[10]="Unreal Enging 4.22";

如果是這些東西要輸出就用這個

debugPrint(__LINE__,3,print(INT,i),print(CHAR,c),print(STRING,str));

不嫌麻煩也可以用這個

debugPrint(__LINE__,3,"i",INT,i,"c",CHAR,c,"str",STRING,str);

顯示結果如下(假設調試代碼在第83行)

Debug message on line 83:
	"i"(int)=10356
	"c"(char)='R';
	"str"(string)="Unreal Enging 4.22"
End debug message.

然後就用這個寫程序
一開始就發現規律:
以a爲0計算: 明碼+密碼再對26取餘就得密碼
那就好算了
表都不用打
在這裏插入圖片描述
一開始
樣例沒過,輸入問題
輸入一改就過了
我甚至寫了一個刷數據的
(代碼就是把一個減號該了加號)
然後似乎AC

然後第二題美滋滋
然後
然後
然後GG
GG

在這裏插入圖片描述
翻車現場
(第一個RE是把ONLINE_JUDGE打成UNLINE_JUDGE導致的)
然後下載樣例,
得出一個結論:
兩個數據是以回車間隔的,而我是以空格分隔讀入的
aaa
然後大改,
結果本地情況:
在這裏插入圖片描述
OJ:
在這裏插入圖片描述
倆WA
然後

========[vigenere9.out]=========
Expected						      |	Yours
wiguiynlznsdmjwabkzxlzepyvAZJDVWEWWCDPDNBSJYWLIMYBPDrtuwsskdp
							      <

==============================
========[vigenere8.out]=========
Expected						      |	Yours
vjihrjxlurwleuwvueanvyajglATWDRKGCQPOYQESBYDSLBDCBLHucfhqnsha
							      <

==============================
========[vigenere4.out]=========
Expected						      |	Yours
iohrvzilldmyuatdhluxxpykgmFPTXGJJBKWSYRBFJSVVNWIEKDNrvehhziuq
							      <

==============================
========[vigenere10.out]=========
Expected						      |	Yours
msfxvxrlgfkdfussyiwvnjnldzFJTPGFRSMMQCGABXDXKPBDYEYMdujhmwmym
							      <

==============================
========[vigenere3.out]=========
Expected						      |	Yours
aqroiftkxnkcmcdaurfwjzwoyoPMGDRIVLIAKABYSPDUHXUMWMNKebpgtjgyi
							      <

==============================
========[vigenere2.out]=========
Expected						      |	Yours
hfnosmkstxrpxycwucdhbzhimgEMNRLJRSWQOWXBVTBCGAYGHLFDlmqkiqrvp
							      <

==============================
========[vigenere7.out]=========
Expected						      |	Yours
wpukmrofcnwtkhsbypmxddkkefGHYRWMOTQHEPYVMJUDAROZFFMMghijatyoq
							      <

==============================
========[vigenere1.out]=========
Expected						      |	Yours
abceefgiijkmmnoqqrsuuvwyyzACCDEGGHIKKLMOOPQSSTUWWXYA
							      <

==============================
========[vigenere5.out]=========
Expected						      |	Yours
hbqflnjlsnxoqwwwqfuacyahcmDFLLLFUJPRNPWRBSUAAAUJYEGCelgqhjppp
							      <

==============================

那就是 不夠魯棒 魯棒後AC MMP