“飲一杯清茶,輕嘆就虛張了年華,幾度春夏,命運(yùn)糾纏,難追尋; 描一抹朱砂,執(zhí)筆就驚起了牽掛,楓葉流丹,血色墓道,勿回首。”
沒能過掉青銅門的QAQ和小伙伴怎甘心空手而回,于是只好走了另一條更加兇險(xiǎn)的暗道,剛走沒幾步QAQ就和他的小伙伴就觸發(fā)了另一個(gè)機(jī)關(guān)—雙子鎖。
若想安全逃生,唯有將鎖身正面的大數(shù)N,分成兩個(gè)合法的數(shù),且為反面兩個(gè)數(shù)字A,B的整數(shù)倍,當(dāng)然QAQ希望最后得到的A的倍數(shù)盡可能的小,久經(jīng)墓道的QAQ們能否安全逃生?
輸入 第一行輸入一個(gè)整數(shù)T (100 >= T > 0),代表有T組測(cè)試數(shù)據(jù)。
每組數(shù)據(jù)的第一行為一個(gè)大數(shù)N,N的長度為 n ( 0 < n =< 1000),第二行為 A,B(1 < A ,B < 10 ^ 8)
輸出 若N可以拆分成A和B的倍數(shù),輸出”YES”,以及拆成的兩個(gè)數(shù)(不能有前導(dǎo)0),反之輸入”NO”
樣例輸入 3 23 2 3 2178 7 8 671 6 4 樣例輸出 YES 2 3 YES 217 8 NO
#include<cstdio>#include<cstring>char ar[1005];int br1[1005];int br2[1005];int main(){ int t; scanf("%d",&t); while (t--){ scanf("%s",ar); int a,b; scanf("%d%d",&a,&b); int len = strlen(ar); int t1 = 0; bool flag = false; int ansa = -1; for (int i = 0; i < len - 1; ++i){ t1 = t1*10 + ar[i]-'0'; t1%=a; if (t1 == 0 && ar[i+1]!='0'){ int t2 = 0; for (int j = i+1; j < len; j++){ t2 = t2*10 + ar[j] - '0'; t2%=b; } if (t2 == 0){ ansa = i; flag = true; } } } if (flag && ansa != -1){ puts("YES"); char tmp = ar[ansa+1]; ar[ansa+1] = 0; puts(ar); ar[ansa+1] = tmp; puts(ar+ansa+1); }else puts("NO"); } return 0;}原來的想法b的前端為0的情況考慮錯(cuò)了 應(yīng)該是從第一個(gè)不為零的數(shù)開始考慮是否是b的倍數(shù) 算是理解題意出了偏差 用了最哥的思路 學(xué)習(xí)了puts的用法
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注