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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UVA465

發布時間:2024/3/12 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVA465 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題解:用正常做法,將兩個數提取,將他們的結果也提取,判斷是否大于int,,注意 0 * 這個陷阱。巧妙的方法有將兩個數所在的字符串用atof()函數轉成double類型,和int比大小。。。 #include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std;const char c[10] = {'2', '1', '4', '7', '4', '8', '3', '6', '4', '7'};int k, flag; int judge(string s) {int len = s.size(), i;if (len > 10) { for (i = 0; i < len; i++)if (s[i] != '0' && (len - i - 1) >= 10)return 1;}else if (len == 10 ) for (i = 0; i < len; i++) {if (s[i] < c[i])break;if (s[i] > c[i])return 1;}return 0; } int result(string s1, string s2) {int ans[500] = {0}, a[500] = {0}, b[500] = {0};string anss = "";int i, j, q;int len1 = s1.size();int len2 = s2.size();if (flag == 1) {for (i = 0; i < len1; i++) a[i] = s1[len1 - 1 - i] - '0';for (i = 0; i < len2; i++) b[i] = s2[len2 - 1 - i] - '0';int lenx = len1 > len2 ? len1 : len2;for (i = 0; i < lenx; i++) {ans[i] = a[i] + b[i] + ans[i];ans[i + 1] = ans[i] / 10;ans[i] = ans[i] % 10;}if (ans[lenx])lenx++;for (j = lenx - 1; j >= 0; j--) anss += ans[j] + '0'; // cout << anss << endl;int a = judge(anss);if (a == 1)return 1;elsereturn 0;}if (flag == 2) {int ans[500] = {0};for (i = len1 - 1; i >= 0; i--)for (j = len2 - 1, q = len1 - 1 - i; j >= 0; j--)ans[q++] += (s1[i] - '0') * (s2[j] - '0');for (i = 0; i < 500; i++) {ans[i + 1] += ans[i] / 10;ans[i] %= 10;}for (i = 499; i >=0; i--)if (ans[i] != 0)break;if (i == -1)return 0;elsefor (q = i; q >= 0; q--)anss += ans[q] + '0';int a = judge(anss);if (a == 1)return 1;elsereturn 0;} }int main(){string str, str1, str2;while(getline(cin, str)) {k = 0;int length = str.size();str1 = "";str2 = "";flag = 0;for (int i = 0; i < length; i++)if(str[i] >= '0' && str[i] <= '9' && flag == 0)str1 += str[i];else if (str[i] == '+')flag = 1;else if (str[i] == '*')flag = 2;else if (str[i] >= '0' && str[i] <= '9' && flag != 0)str2 += str[i];cout << str << endl;int k1 = judge(str1);int k2 = judge(str2);if (k1 == 1) cout << "first number too big" << endl;if (k2 == 1) cout << "second number too big" << endl;if (flag == 2) { //判斷0 * ? 結果不會大于intint i, j;if (k1 == 1) {int len2 = str2.size();for (i = 0; i < len2; i++)if (str2[i] != '0')break;if (i == len2)continue;}else if (k2 == 1) {int len1 = str1.size();for (j = 0; j < len1; j++)if (str1[j] != '0')break;if (j == len1)continue;}}if (k1 == 1 || k2 == 1)cout << "result too big" << endl;elseif (result(str1, str2) == 1)cout << "result too big" << endl;}return 0; }

總結

以上是生活随笔為你收集整理的UVA465的全部內容,希望文章能夠幫你解決所遇到的問題。

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