3127 - I2P(I)2024_Yang_hw9 Scoreboard

Time

2024/11/18 17:20:00 2024/11/26 18:30:00

Clarification

# Problem Asker Description Reply Replier Reply Time For all team

# Problem Pass Rate (passed user / total user)
11269 Text Editor
14323 PrinPriPrin (version 2)
14518 PrinPriPrin

11269 - Text Editor   

Description

In this problem we simulate a simple text editor. Given a series of keyboard input, output the final text content.
The text editing rules are defined as following:
1. Normal alphabetical input and whitespace input (abcdefg…. and ‘ ‘) directly write  after the cursor of the text content.
And four special commands started with a backslash(/) character
2. The backspace command which deletes a letter before the cursor (/backspace)
3. The newline command which creates a new line after the cursor (/newline)
4. The two navigating commands which move the cursor (/left /right)

The size of the text content is fixed to 500 characters, and the text content of testcases will not exceed 500 characters when simulating.

Use fgets(). (https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fgets-fgetws?view=msvc-170)

Hint:

#include <stdio.h>

#define MAX_SIZE 500

char content[MAX_SIZE];
char input[MAX_SIZE];

int main()
{

    fgets(input, MAX_SIZE, stdin);

    /* your code here */

    printf("%s", content);

    return 0;
}

Input

The keyboard input sequence.
There is always a valid command(/backspace /newline /left /right) right after the backslash character.
There is no newline character at the end

Output

The final text content.

Sample Input  Download

Sample Output  Download

Tags




Discuss




14323 - PrinPriPrin (version 2)   

Description

You never believed in aliens until one day, while exploring a building rumored to have UFO sightings to win a bet with your friend. During a phone call with your friend, the signal became increasingly distorted. Suddenly, you lost consciousness. When you opened your eyes, three aliens with mechanical arms appeared before you in a strange space, with your limbs restrained.

Your friend, discovering your disappearance, uses Turbo Granny(高速婆婆)time-travel ability to reach you. To pinpoint your location, he sends signals that you need to respond to. 

 

You will receive T signals S. You need to return the execution result of each line to your friend.

The signals will only appear in the following formats:

1. printf("<string>");
2.
 printf("<string>", '<char>' / <integer>, '<char>' / <integer>, ...);
3.
 for(int i=N; i < M; i++) printf(...);

(The printf format in the 3rd case follows the same pattern as cases 1 and 2.)

Please process your string using the Gen function and output the result.
(You can modify the Gen function as long as you ensure the output result is correct.)

#include <stdio.h>
#include <string.h>

int Gen(int init, char *str){
    int mul = 37, mod = 1e9 + 7;
    long long ret = init, len = strlen(str);

    for (int i=0; i < len; i++){
        ret *= mul;
        ret += str[i];
        ret %= mod;
    }

    return ret;
}

Input

The first line contains an integer T, representing the number of signals.

The following T lines each contain a string S, representing the signal to process in the i-th round.

Each signal Si is guaranteed to:

  • Not contain backslashes ( \ ) or single quotes ( ' )
  • ( % ) only appears in %c and %d formats
  • Not contain double quotes ( " ) inside printf strings

Constraints

  • 1 ≤ T ≤ 100
  • 1 ≤ |S | ≤ 104
  • 0 ≤ |N - M | ≤ 500
  • 0 ≤ input integer ≤ 109

Subtasks

  • Testcases 1 ~ 4: printf appears in the input
  • Testcases 5 ~ 6: printf, for-loop appear in the input
  • Testcases 7 ~ 8: printf, for-loop%c appear in the input
  • Testcases 9 ~ 10: No additional restrictions

Output

Output T lines, each containing a signal Safter being processed by the Gen function, representing the signal to process in the i-th round.

 

Please remember to print "\n" at the end.

Hint

You can solve this problem using the fgets function and some functions from the string.h library.

  1. Use fgets(). (https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fgets-fgetws?view=msvc-170)
  2. Use strtok(). (https://cplusplus.com/reference/cstring/strtok/)

 

If you are not sure how to use Gen, please refer to the following.

If the input is "printf(...);" , you can process it with the following code.

int main(){
 
    // your code
 
    int ans 0;
    ans = Gen(ans, <your string>);
    printf("%d\n", ans);
 
    return 0;
}

 

If the input is "for(int i=N; i < M; i++) printf(...);" , you can process it with the following code.

int main(){
 
    // your code
 

    int ans 0;

    for(int i=N; i < M; i++){

        ans = Gen(ans, <your string>);
    }
 
    printf("%d\n", ans);
 
    return 0;
}
 
For example, if the input is "for(int i=10; i < 14; i++) printf("I2P1 is very %d%c for me.", 1, 'z');"
You should use the second one, and 
N should be 10, M should be 14, and <your string> should be "I2P1 is very 1z for me."

Sample Input  Download

Sample Output  Download

Tags




Discuss




14518 - PrinPriPrin   

Description

You never believed in aliens until one day, while exploring a building rumored to have UFO sightings to win a bet with your friend. During a phone call with your friend, the signal became increasingly distorted. Suddenly, you lost consciousness. When you opened your eyes, three aliens with mechanical arms appeared before you in a strange space, with your limbs restrained.

Your friend, discovering your disappearance, uses Turbo Granny(高速婆婆)time-travel ability to reach you. To pinpoint your location, he sends signals that you need to respond to. 

 

You will receive T signals S. You need to return the execution result of each line to your friend.

The signals will only appear in the following formats:

1. printf("<string>");
2.
printf("<string>", '<char>' / <integer>, '<char>' / <integer>, ...);
3.
for(int i=N; i < M; i++) printf(...);

(The printf format in the 3rd case follows the same pattern as cases 1 and 2.)

Input

The first line contains an integer T, representing the number of signals.

The following T lines each contain a string S, representing the signal to process in the i-th round.

Each signal Si is guaranteed to:

  • Not contain backslashes ( \ ) or single quotes ( ' )
  • ( % ) only appears in %c and %d formats
  • Not contain double quotes ( " ) inside printf strings

Constraints

  • 1 ≤ T ≤ 200
  • 1 ≤ |S | ≤ 104
  • 0 ≤ |N - M | ≤ 1000
  • 0 ≤ input integer ≤ 109

Subtasks

  • Testcases 1 ~ 4: printf appears in the input
  • Testcases 5 ~ 6: printf, for-loop appear in the input
  • Testcases 7 ~ 8: printf, for-loop%c appear in the input
  • Testcases 9 ~ 10: No additional restrictions

Output

Output T lines, each containing a signal S, representing the signal to process in the i-th round.

 

Please remember to print "\n" at the end.

Hint

You can solve this problem using the fgets function and some functions from the string.h library.

  1. Use fgets(). (https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fgets-fgetws?view=msvc-170)
  2. Use strtok(). (https://cplusplus.com/reference/cstring/strtok/)

Sample Input  Download

Sample Output  Download

Tags




Discuss