From f76eebdcb396e1b0728f30f38231c0672f532eec Mon Sep 17 00:00:00 2001 From: unlockable Date: Thu, 28 Sep 2023 23:28:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E9=A2=98=E7=9B=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .clang-format | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1001/main.cpp | 71 +++++++++++++++++ 1002/main.cpp | 39 ++++++++++ 3 files changed, 319 insertions(+) create mode 100644 .clang-format create mode 100644 1001/main.cpp create mode 100644 1002/main.cpp diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..f91889e --- /dev/null +++ b/.clang-format @@ -0,0 +1,209 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Custom +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +QualifierAlignment: Leave +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +PackConstructorInitializers: BinPack +BasedOnStyle: '' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +AllowAllConstructorInitializersOnNextLine: true +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseLabels: false +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: AfterExternBlock +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +LambdaBodyIndentation: Signature +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PenaltyIndentedWhitespace: 0 +PointerAlignment: Right +PPIndentWidth: -1 +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RequiresClausePosition: OwnLine +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceAroundPointerQualifiers: Default +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +BitFieldColonSpacing: Both +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 4 +UseCRLF: false +UseTab: Never + diff --git a/1001/main.cpp b/1001/main.cpp new file mode 100644 index 0000000..c4fbb7d --- /dev/null +++ b/1001/main.cpp @@ -0,0 +1,71 @@ +#include + +int main() { + char a[1000] = {0}; + char b[1000] = {0}; + char result[1001] = {0}; + int a_index = 0, b_index = 0; + int result_index = 0; + char ch = getchar(); + while (ch != ' ') { + a[a_index] = ch - '0'; + ch = getchar(); + a_index++; + } + + a_index--; + + ch = getchar(); + while (ch != '\n' && ch != EOF && ch != ' ') { + b[b_index] = ch - '0'; + ch = getchar(); + b_index++; + } + + b_index--; + + if (a_index >= b_index) { + while (a_index >= 0) { + int current_digit = a[a_index] + b[b_index] + result[result_index]; + result[result_index] = current_digit % 10; + result[++result_index] = current_digit / 10; + a_index--; + b_index--; + } + + while (a_index >= 0) { + int current_digit = a[a_index] + result[result_index]; + result[result_index] = current_digit % 10; + result[++result_index] = current_digit / 10; + a_index--; + } + } + else { + while (a_index >= 0) { + int current_digit = a[a_index] + b[b_index] + result[result_index]; + result[result_index] = current_digit % 10; + result[++result_index] = current_digit / 10; + a_index--; + b_index--; + } + + while (b_index >= 0) { + int current_digit = b[b_index] + result[result_index]; + result[result_index] = current_digit % 10; + result[++result_index] = current_digit / 10; + b_index--; + } + } + + if (result[result_index] == 0) { + // The hightest digit is carry. There is a possibility that this digit is 0. + result_index--; + } + + while (result_index >= 0) { + printf("%d", result[result_index]); + result_index--; + } + + return 0; +} \ No newline at end of file diff --git a/1002/main.cpp b/1002/main.cpp new file mode 100644 index 0000000..e3eb77c --- /dev/null +++ b/1002/main.cpp @@ -0,0 +1,39 @@ +#include + +struct Matrix { + int a_11, a_12, a_21, a_22; +}; + +Matrix matrix_multiply(Matrix &mat1, Matrix &mat2) { + return Matrix{(mat1.a_11 * mat2.a_11 + mat1.a_12 * mat2.a_21) % 9973, + (mat1.a_11 * mat2.a_12 + mat1.a_12 * mat2.a_22) % 9973, + (mat1.a_21 * mat2.a_11 + mat1.a_22 * mat2.a_21) % 9973, + (mat1.a_21 * mat2.a_12 + mat1.a_22 * mat2.a_22) % 9973}; +} + +int main() { + int n; + scanf("%d", &n); + for (int i = 0; i < n; i++) { + int ai; + scanf("%d", &ai); + if (ai <= 2) { + printf("1\n"); + continue; + } + ai -= 2; + Matrix multiply = Matrix{1, 1, 1, 0}; + Matrix result = Matrix{1, 0, 0, 1}; + Matrix orig = Matrix{1, 0, 1, 0}; + while (ai > 0) { + if (ai & 1) { + result = matrix_multiply(result, multiply); + } + multiply = matrix_multiply(multiply, multiply); + ai = ai >> 1; + } + result = matrix_multiply(result, orig); + printf("%d\n", result.a_11); + } + return 0; +} \ No newline at end of file