ضرب اعداد بزرگ! - تالار گفتمان آذر فروم





دعوت به همکاری با آذر فروم

 

ضرب اعداد بزرگ!
زمان کنونی: 15-09-1395،10:08 ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: Friga
آخرین ارسال: Friga
پاسخ: 1
بازدید: 197

 
 
رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5

موضوع: ضرب اعداد بزرگ!
ارسال: #1
ضرب اعداد بزرگ!
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
آخرین ویرایش در 28-05-1391 05:18 ب.ظ توسط Friga
با این code میشه اعداد خیلی بزرگ رو خیلی سریع در هم ضرب کرد . اعدادی که تو هیچ متغیر عددی جا نمیشن

کد:
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
string zarb(string &a,string &b){
   reverse (a.begin(),a.end());
   reverse (b.begin(),b.end());
   string ans;
   ans.insert(0,1000,'0'); // inja mishe andazeye javab ro taghir dad
   int c=0;
   int i,j;
   for (i=0;i<a.size();++i){
     for (j=0;j<b.size();++j){
        if ( (ans[i+j]-48 + ((a[i]-48)*(b[j]-48)+c)%10) > 9 ){
          int carry=(ans[i+j]-48 + ((a[i]-48)*(b[j]-48)+c)%10) /10;
          ans[i+j] = (ans[i+j]-48 + ((a[i]-48)*(b[j]-48)+c)%10) %10 + 48;
          c=((a[i]-48)*(b[j]-48)+c)/10;
          int k=1;
          ans[i+j+k]+=carry;
          while ( ans[i+j+k]>'9' ){
            carry = (ans[i+j+k] - '0')/10;
            ans[i+j+k]= (ans[i+j+k]-48)%10 +'0';
            ++k;
            ans[i+j+k]+=carry;
          }
        }
        else{
          ans[i+j] += ((a[i]-48)*(b[j]-48)+c)%10;
          c = ((a[i]-48)*(b[j]-48)+c ) /10;
        }
     }
     ans[i+j]+=c;
     c=0;
   }
   for (int i=ans.size()-1;i>0;--i)
        if (ans[i]=='0')
           ans.erase (ans.end()-1);
        else
          break;
   reverse (ans.begin(),ans.end());
   return ans;
}
int main() {
    string s1,s2;
    cin >> s1 >> s2;
    cout << zarb(s1,s2) << endl;
    return 0;
}</pre>
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

28-05-1391 05:17 ب.ظ
 


[-]
پاسخ سریع
پیام
پاسخ خود را برای این پیام در اینجا بنویسید.


کد تصویری
royalfuns
(غیر حساس به بزرگی و کوچکی حروف)
لطفاً کد نشان داده شده در تصویر را وارد نمایید. این اقدام جهت جلوگیری از ارسال‌های خودکار ضروری می‌باشد.

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان