日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Gym - 101972A Multiplication Dilemma(模拟)

發布時間:2024/4/11 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gym - 101972A Multiplication Dilemma(模拟) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:我們規定特殊數字是除了最高位之外其他位置全是0的數,現在給出一個乘法表達式,請將這個式子拆分為只由特殊數字組成的乘法式子

題目分析:簡單模擬題,我們需要先知道該怎么模擬才行,既然題目明確說了,我們需要拆分成只由特殊數字所組成的式子,這里直接舉個簡單的例子應該就沒問題了:

12345 * 54321

=(10000+2000+300+40+5)*(50000+4000+300+20+1)

我們可以發現,每個數字都可以拆分成上述形式,也就是許多個特殊數字之和的形式,將兩個因子都拆分成這個形式,然后去掉括號,就是我們要求的答案了,注意一下答案的正負性,稍微判斷一下就好了

還有一個需要注意的地方就是,雖然題目中說了數字最大只有1e9,但是我們用字符串更方便處理,詳細的見代碼吧,簡單模擬

#include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cstring> #include<algorithm> #include<stack> #include<queue> #include<map> #include<sstream> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e5+100;int f[10];int pa[15],pb[15];int main() { // freopen("input.txt","r",stdin);f[0]=1;for(int i=1;i<10;i++)f[i]=f[i-1]*10;int w;cin>>w;while(w--){string a,b;cin>>a>>b;int lena=a.size();int lenb=b.size();a=" "+a;b=" "+b;int opa=a[1]=='-'?-1:1;int opb=b[1]=='-'?-1:1;int cnta=0,cntb=0;for(int i=opa==1?1:2;i<=lena;i++)if(a[i]-'0')pa[++cnta]=i;for(int i=opb==1?1:2;i<=lenb;i++)if(b[i]-'0')pb[++cntb]=i;int ff=opa*opb;for(int i=1;i<=cnta;i++)for(int j=1;j<=cntb;j++){if(i==1&&j==1){if(ff==1)printf("%d x %d",(a[pa[i]]-'0')*f[lena-pa[i]],(b[pb[j]]-'0')*f[lenb-pb[j]]);elseprintf("-%d x %d",(a[pa[i]]-'0')*f[lena-pa[i]],(b[pb[j]]-'0')*f[lenb-pb[j]]);}elseprintf(" %c %d x %d",ff==1?'+':'-',(a[pa[i]]-'0')*f[lena-pa[i]],(b[pb[j]]-'0')*f[lenb-pb[j]]);}printf("\n");}return 0; }

?

總結

以上是生活随笔為你收集整理的Gym - 101972A Multiplication Dilemma(模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。