#90. 【求测试】矩阵

【求测试】矩阵

Background

这题面……不好评价。

数据全手造的,水得很

image

征求大样例。

Description

加法:Ci,j=Ai,j+Bi,jC_{i,j} = A_{i,j}+B_{i,j}

减法:Ci,j=Ai,jBi,jC_{i,j} = A_{i,j}-B_{i,j}

乘法:Ci,j=k=1MAi,kBk,jC_{i,j} = \sum_{k=1}^MA_{i,k}B_{k,j}

本题不需要用到Strassen等算法 因为我不会

Format

Input

第一行,一个数字 ss

接下来 ss 行,分别为ss 个常量的名字及常量。

接下来一行,一个数字 hh

接下来??行,分别为 hh 个矩阵。每个矩阵输入时第一行为两个数字 uuvv,表示该矩阵的行数和列数,随后 uu 行输入该矩阵,元素之间用空格隔开。保证元素均为整数。(u,v100u,v\leq 100)

接下来一行,一个数字 oo

接下来 oo 行,分别为 oo 个操作。每行输入 namenameopopaabb,当 op{+,,×}op\in\{+,-,\times\}时表示将矩阵 aa 和矩阵 bb 进行 opop 运算后的结果存储到矩阵 namename 中,此时如果矩阵 aa 或矩阵 bb 不存在需报错,具体格式为line {line}:{e}不存在,若矩阵 aa 和矩阵 bb 均不存在只需报矩阵 aa 的错;当 opop** 时将矩阵 aabb 次幂存储到矩阵 namename 中,如果矩阵 aa 不存在需报错,具体格式为line {line}:{e}不存在。其余报错格式详见样例。所有运算均在模 100000000000000000039100000000000000000039 意义下进行。

接下来一行,一个数字 pp

接下来 pp 行,每行一个矩阵名 nn。表示输出矩阵 nn。如果矩阵 nn 不存在需报错,具体格式为line {line}:{e}不存在

可配合样例理解。

Output

略。(主要是我也不知道怎么写输出格式

Samples

3
value1 10
value2 100
value3 1000
4
matrix1 3 3
9 8 7
2 3 4
1 0 8
matrix2 3 4
9 9 9 0
8 8 8 4
1 2 3 4
matrix3 3 3
8 7 4
8 7 2
1 0 1
matrix4 4 3
1 2 3
4 5 6
7 8 9
0 9 -9
10
matrixe1 + matrix1 matrix2
matrix5 * matrix2 matrix4
matrix5 * matrix2 matrix4
matrix6 ** matrix5 value1
matrix6 ** matrix6 value2
matrixe2 ** matrix2 value1
matrix1 + matrix1 matrix3
matrixe3 + matrixu1 matrix1
matrixe4 ** matrixu2 value3
matrixe5 ** matrix1 valueu1
4
matrix6
matrix1
matrix5
matrixunknown
line 24:A与B非同类矩阵
line 29:A矩阵与B矩阵无乘运算
line 31:'matrixu1'不存在
line 32:'matrixu2'不存在
line 33:'valueu1'不存在
44737663939567943822 61283590635828848650 36089253912946314959 
81403609418606086436 52140061029321674670 3635001086610248260 
37583308548600552813 92010176144924896180 14379673857254631385 
17 15 11 
10 10 6 
2 0 9 
108 135 162 
96 156 108 
30 72 6 
line 38:'matrixunknown'不存在
5
value1 10
value2 100
value3 1000
value4 10000
value5 1000000000000000000000000000000000000000000000000000000000000
2
matrix1 10 10
25 76 -6 74 -98 -73 -30 11 79 -88 
89 -17 -80 -7 23 -51 -53 11 -77 3 
-79 63 41 -85 -16 79 -59 8 -66 35 
55 95 -47 56 77 95 55 -6 -96 -40 
-80 -52 -3 -60 -63 16 -36 21 78 70 
-63 -38 53 66 51 80 -43 -100 -64 -57 
-72 7 -31 57 -30 -93 -95 -92 7 -4 
-6 -25 -91 -3 7 -25 78 -99 -27 78 
41 28 42 41 -87 -34 -74 -7 49 -69 
-32 36 -24 -76 92 30 7 93 11 36 
matrix2 10 10
96 26 13 69 67 12 55 -4 -11 -82 
-5 73 -66 50 -47 37 -6 3 59 -53 
26 -87 -9 27 -9 98 84 27 -41 -44 
98 -64 -39 -69 46 69 -55 -1 -97 9 
-77 -44 72 54 59 -89 55 -88 87 96 
4 -5 78 -8 77 -66 -86 -1 35 -41 
-23 -40 -59 4 -62 64 -40 15 -2 81 
-24 -9 57 82 -21 86 15 -53 -66 -31 
92 -100 -63 56 -1 -74 -29 53 48 48 
-21 27 -81 -72 16 65 59 -32 -26 44 
12
matrix3 ** matrix1 value3
matrix4 ** matrix2 value3
matrix1 + matrix3 matrix4
matrix2 - matrix3 matrix4
matrix3 ** matrix1 value4
matrix4 ** matrix2 value4
matrix1 + matrix3 matrix4
matrix2 - matrix3 matrix4
matrix3 ** matrix1 value5
matrix4 ** matrix2 value5
matrix1 + matrix3 matrix4
matrix2 - matrix3 matrix4
4
matrix1
matrix2
matrix3
matrix4
-118781981837341369014 -64010743910299965298 -32287345641795939421 125011170190074660310 -77581307056051195273 -92782669460366939 -72763562027828589791 -52633880933774716469 64118434769124352060 -160334534844841635596 
57809216535262603401 2619050366316325108 11149100877318602157 -21767243445196594949 89388703535744666188 -1654946688194626699 91537215503616025460 148422052716027786261 -83079764319758132477 39500533107323778495 
78606604182756329974 -14606390263080217005 -20399545751249251902 -157504008225846770647 42741154959717236597 -29895548273644008897 22086030901102894383 150261113615090791244 -76036477722974730951 95143797626706813672 
43478604029328659886 -119675705316594182587 167814854403582815364 -52484735157827819810 -19251174943249198332 -83124452658866298502 391903434192250104 14609267979622933075 -25590707740604451929 -62241084199601381692 
43350421628549407463 -4740289936847145793 25312746417493425154 -135870482313281608780 68427982845577275033 -41143420711041220318 43696669058671969651 72738220890035544259 -135592799537732779310 136827606608205224820 
58143032661408721250 84508783250383924012 -111517218376474375304 -8557172208013334137 -692107207572069531 86106481253339669602 -70434452619940230580 5079467348828206260 36484173059663936311 -54376268403094929596 
10924894574990034017 -103301526082554853267 93137202647997628998 -32705740535104620421 34129455147427483444 -72736455815842354917 -5634159551915211056 -3111153615780355713 18393905304064087966 23115692794448322439 
176681626078894303174 -77846778432031279891 -43469851028726271191 -99964105583890853259 153675499287623841830 47815152200347505733 90568012820944173090 116940182428878288265 -37747093399007656286 171718756264574779074 
36836189870104407132 -171673171762036877160 111983036147325875032 2344902665754434670 30053525720234998237 -127180215117373398300 -17709562345208087142 37542765336045326426 7154887356349185221 -32092674649150232557 
107414516816086335197 -2986459475355711252 42949694187419590197 -73559929697831615338 101958523979747395053 -10590359144323602159 25174038317259568498 37720159062780526457 -54128954539859001283 151869237065694033970 
28499951397348197752 -80599365286795150630 159306315398367762631 -69902972511832550780 -32564367638087561687 -158565210956480325133 -64672688829721137023 23000373951425794329 45020997975607315948 -37631876705588594540 
37166248393023744247 173883866270049670614 -23869872458102617259 -19268827827420840085 -17891618962688803250 66486832416931935745 4288935043019134800 -26072566347755255331 71045648239455758663 24297047384027268077 
-39644529469595704284 155060226368582397945 -130226016144625063648 -16712414139475497373 -12156676607773945629 81481712605615339969 3402502819459442727 -7331036478675263138 -35625957666228635263 -6327036577435784480 
-60122812412796910008 32405332521760903631 -2654249639669365310 144248456108377541806 -124576705630114492400 -46377402513139685234 -21598279941833671760 -183585753075035148461 30194209543601577655 -64167591430974437214 
20872133879089928337 157595037404599965925 -38036362384084945794 -11710822823455254972 -30258435944119357819 136761849349548460608 -4057751885595421281 -34113115400856956313 -1363096954419544638 -46198521048382055288 
95593675466601185676 36790235660894625876 73412978797210410912 -187315252959657173157 69657714550594252443 -59173406456411919836 122632310417669239280 141950961359925035646 -62158871656976995115 125519472953729246092 
-56797490478408507665 64843587674451377315 91337321371909265114 45549646740717595309 -68933264909029947176 27651914505566322967 -177618720877972035814 -18192041127188622661 36151403270894688646 -99497476609563002493 
-16851883048586195342 117081885796503903269 -53993517167941135681 37424228112210980165 14758421997181763834 129878790568748739773 10650483346883418668 77484735009772019663 -809198274649864446 5804711008074490286 
-72956383317476263330 24173069838724844706 18171164772588580450 15578574780639488720 -79817357006979138243 16975902002189875670 -148315265039500249100 -62902309571452469684 68768512039403783577 -105638854493644530455 
-45441729951905395877 136071306970861741290 -67438508344187303675 -7652912423711848582 78489653707121354357 31801408761674389579 -6312821391684699520 21116779699043142717 -53554539510211099199 13428931496835580154 
-45141015219996585631 -72305054598547557964 63509484878285911605 27554098839121054765 -55072837347069378480 -79328996812970346036 -68718125428774863407 -14816753491174461070 54569716372365834004 -98983205775215115068 
47487732464143173824 88251458318182997861 -6360385790392007551 -20518035636308717517 35748542286527931469 32415942864368654523 47913075273317580130 61174743184136265465 -6017058040151186907 31898790245675523286 
19481037356580312845 70226918052751090470 -75312780947937157775 -87108211182661134010 15292239175971645484 25793082165985665536 12744266860281168555 71465038568207764053 -55831217694601683107 44408380524635514596 
-8322104191734125061 -43635186397416639478 82580302381956725027 45881860475274860998 -71913940286681845366 -64750927586002991868 -10603188253820710828 -84488242547706107693 2301750901498562863 -63204337815287909453 
32111277753819667900 76427373733876410066 -6361807983295760320 -73790652568368431876 19084773450728958607 47809214319253620145 19819458586538274185 19312552744589293973 -68477948246076161974 45314542779911584766 
76868354064004953463 60649509455639274944 -19052119789631982196 -97936212583835253647 34482803671511091456 13466537398463874883 26098928898864504350 73515214354376620953 -12837349298656529402 35571602275317158248 
-22936297951709236824 -19228969204051737976 92237262009953447056 6421953102806487444 -17401904880801231866 -22542270655138015975 -91626440214943623435 -10651597371484489187 27272654287479388306 -38190891907557340027 
79914871515154053916 19617553682236311689 -48731684098333703436 -31269938735839936547 84216960642402802832 88846971384548122753 50609248083913795879 97212458719325153964 -19278145836828760366 88761733636324634680 
-18060096723685928099 -73750050961656016227 65077100459957227741 8961738723196961695 -24881915643372070003 -55102156557591761315 -83012413692354168121 -12679772117703571629 37961699697876484399 -68865764571397381506 
30986393432090469660 66542423747753015019 -12244407078383856739 -40606421060771731960 90224088843434374705 10605524808675393710 9430608462787434489 29418469380911834587 -53841747025035050241 82649084281264807062 
-73640966617344783383 8294310688247592666 -95796830520081851026 97457071350953605545 -22508469708981816793 79236214143509979097 -4045436599053726384 -37817127442600255399 9548718396758518056 -61351329069626520528 
10321484071119429577 -85632407951866672753 17509486667710609708 -1249207808887877432 53640161249216734719 -34070889552563281222 43624140230298445330 87247309531891520796 -77062706279606945570 7601742861648255209 
59125566826176017129 -84833308315831307475 54913235196687905873 -70395797043185636637 27448915783745591113 -55688630439629674433 9341764040821725828 78796075046883027191 -20205260028373047844 50735417102071299076 
51800708221062784947 -76040518919177543109 85234552021626090337 -98366595633102680808 52662765343432647034 -18373525072863306634 10995091688012960932 99097510527329040768 -27892458642103014792 963253615686527761 
11239143874729739563 -81167663670723555859 31674554400789185474 -62079829744913176904 49343209394848316426 -88952635030294840463 23877210472133695466 53425668145446250286 -67114851291656617336 91513063828293640054 
-18725321402596232213 23859273794744649068 -92465098586842393108 89379040375821919510 -35174910879083160987 72639943854875794719 -96533381518804734930 -68435747005548414693 49321522358320465713 -89947870678412087844 
33861192526699270841 -84072556878503115291 899940638044181942 -39127693637911107865 51531360028228715310 -50194185160704338942 85992280663028412379 7540443755704133474 -8878748983415300340 61306584702005662466 
96766754563740249258 -97464332114267591580 5261833069607432245 -68694166848050916712 69458538645221038998 -41031819184200617020 39958764737030377211 19727723709553134301 -18468947562178895920 82957022628250144394 
54896286593790335231 -97923120800380860933 46905935687368647291 -6616836057442527025 54935441363607068240 -72078058559781636985 65302851347146080979 50222537453748898055 -30806812341527299178 36773089922247148949 
76428123383995865537 -69528883223108726271 55194101265803446936 -32953508637059883378 11734435136313020348 -21195883952998995869 15743429854472134009 8301689681868691870 -287207514823951042 69220152784429226908