Is the Name of This Problem
来源:互联网 发布:淘宝无线装修入口 编辑:程序博客网 时间:2024/05/21 10:51
The philosopher Willard Van Orman Quine (1908–2000) described a novel method of constructing a sentence in order to illustrate the contradictions that can arise from self-reference. This operation takes as input a single phrase and produces a sentence from that phrase. (The author Douglas R.Hofstadter refers to this process asto Quine a phrase.) We can de ne the Quine operation like so: Quine(A) ="A" AIn other words, if A is a phrase, then Quine (A) is A enclosed in quotes (" "), followed by a space,followed by A. For example: Quine(HELLO WORLD) = "HELLO WORLD" HELLO WORLD Below are some other examples of sentences that can be created by the Quine operation. Note that Quining allows sentences to be indirectly self-referential, such as the last sentence below. "IS A SENTENCE FRAGMENT" IS A SENTENCE FRAGMENT "IS THE NAME OF THIS PROBLEM" IS THE NAME OF THIS PROBLEM "YIELDS FALSEHOOD WHEN QUINED" YIELDS FALSEHOOD WHEN QUINED Your goal for this problem is to take a sentence and decide whether the sentence is the result of a Quine operation.
Input
The input will consist of a sequence of sentences, one sentence per line, ending with a line that has the single word, `END'. Each sentence will contain only uppercase letters, spaces, and quotation marks. Each sentence will contain between 1 and 80 characters and will not have any leading, trailing, or consecutive spaces. You must decide whether each sentence is the result of a Quine operation. To be a Quine, a sentence must match the following patternexactly : 1. A quotation mark 2. Any nonempty sequence of letters and spaces (call this phrase A ) 3. A quotation mark 4. A space 5. Phrase A | exactly as it appeared in (2) If it matches this pattern, the sentence is a Quine of the phrase A . Note that phrase A must contain the exact same sequence of characters both times it appears.
Output
There will be one line of output for each sentence in the data set. If the sentence is the result of a Quine operation, your output should be of the form, `Quine(A)', where A is the phrase to Quine to create the sentence.If the sentence is not the result of a Quine operation, your output should be the phrase, ` not aquine'.
Note:
A review of quotation marks in strings: As a reminder, the quotation mark character is a regular character, and can be referred to in C, C++, and Java using the standard single-quote notation, like so:'"' However, to place a quotation mark inside a double-quoted string in C, C++, and Java, you must place a backslash (n) in front of it. If you do not it will be interpreted as the end of the string, causing syntax errors. For example: "This quotation mark \" is inside the string" "\"" "\"SAID SHE\" SAID SHE"
SampleInput
"HELLO WORLD" HELLO WORLD"IS A SENTENCE FRAGMENT" IS A SENTENCE FRAGMENT"IS THE NAME OF THIS PROBLEM" IS THE NAME OF THIS PROBLEM"YIELDS FALSEHOOD WHEN QUINED" YIELDS FALSEHOOD WHEN QUINED"HELLO" I SAIDWHAT ABOUT "WHAT ABOUT"" NO EXTRA SPACES " NO EXTRA SPACES"NO"QUOTES" NO"QUOTES""END
SampleOutput
Quine(HELLO WORLD)Quine(IS A SENTENCE FRAGMENT)Quine(IS THE NAME OF THIS PROBLEM)Quine(YIELDS FALSEHOOD WHEN QUINED)not a quinenot a quinenot a quinenot a quinenot a quine
一道水题,唯一注意的是要判断 二次引用 /“ ,还有一定得是( ” )开头的 ”A“ A,中间还得有空格(-_-WA了一次才意识到)
#include <cstdio>#include <cstring>using namespace std;char A[100000],B[100000],C[100000];bool Handle(int len){ int Count_B=0,Count_C=0,i; if(A[1]!='"') return false; for(i=2;i<=len;i++) { if(A[i]=='"') { if(A[i-1]!=92) break; else B[++Count_B] = A[i]; } else if(A[i]==92&&A[i]&&A[i+1]=='"') continue; else B[++Count_B] = A[i]; } if(A[++i]!=' ') return false; for(i = i+1;i<=len;i++) C[++Count_C]=A[i]; B[Count_B+1]=C[Count_C+1]=0; //puts(B+1);puts(C+1); if(!Count_B||!Count_C) return false; return !strcmp(B+1,C+1);}int main(void){ //freopen("E:\\test.txt","r",stdin); while(gets(A+1)!=NULL) { if(!strcmp("END",A+1)) break; bool flag = Handle(strlen(A+1)); if(flag) printf("Quine(%s)\n",C+1); else printf("not a quine\n"); }
0 0
- HUNNU11354:Is the Name of This Problem
- Is the Name of This Problem
- This is the first problem
- UVa 11479 - Is this the easiest problem?
- What Is the Purpose of This Book?
- 'getch': The POSIX name for this item is deprecated
- What is the name of the “-->” operator?(Stackoverflow)
- #("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:")
- #("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:")
- It is because of the existence of this spell, t
- VS2015编译问题:The POSIX name for this item is deprecated. Instead, use the ISO C
- Problem 16 - What is the sum of the digits of the number 2^1000?
- Node.js Setup:This may indicate a problem with this package. The error code is 2503.
- The variance for this alert is **MB which is 20% of the **MB average (**MB is the limit)
- this is the request
- Fix the problem:xxx is not in the sudoers file.This incident will be reported
- error C4996: 'stricmp': The POSIX name for this item is deprecated
- setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key name.
- Object-Oriented Analysis and Design Using UML 翻译与学习 (一)
- STL之vector容器
- RaspberryPi 3B 之初体验笔记(续一)
- Android 访问res目录下的资源
- StepView(步骤流程的view)
- Is the Name of This Problem
- 生成算法与判别算法
- 为表格添加数据
- 为引导页添加导航点
- Sub Main启动与窗体启动
- linux下shell显示-bash-4.1#不显示路径解决方法
- 【VS开发】【电子电路技术】RJ45以太网传输线研究
- 在Java Web应用程中
- matlab-高数 求二阶导