首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

HDU 1282 回文數猜想:字符串翻轉相加迭代求回文(大數模擬)

     編輯:C++ 入門

給定整數,反轉相加,重複直到得回文數。記錄每步結果。可用字符串模擬大數加法。

字符串大數加法流程

  • 反轉字符串 reverse(s.begin(),s.end())
  • atoi(s.c_str()) 轉整數(若位數較少)或手工逐位相加
  • 判斷回文:s == reversed_s
  • 迭代直到回文或達上限

代碼框架

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;

bool isPalindrome(string s) {
    string t=s; reverse(t.begin(),t.end()); return s==t;
}
string addStrings(string a, string b) {
    reverse(a.begin(),a.end()); reverse(b.begin(),b.end());
    string res; int carry=0;
    for(int i=0;i>s) {
        if (isPalindrome(s)) { cout<<0<

關鍵函數

  • stringstream 實現 int↔string 轉換
  • reverse 算法庫函數翻轉字符串
  • atoi(str.c_str()) C 風格轉整數

大數加法字符串模擬是無 BigInteger 環境下的通用技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved