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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

确定进制(信息学奥赛一本通-T1413)

發布時間:2025/3/17 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 确定进制(信息学奥赛一本通-T1413) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目描述】

6*9=42 對于十進制來說是錯誤的,但是對于 13 進制來說是正確的。即 6(13)*9(13)=42(13),而 42(13)=4*131+2*130=54(10)。

你的任務是寫一段程序,讀入三個整數 p、q和 r,然后確定一個進制 B(2≤B≤40) 使得 p*q=r。如果 B 有很多選擇, 輸出最小的一個。

例如:p=11, q=11, r=121.則有11(3)*11(3)=121(3)因為 11(3)=1*31+1*30=4(10)和121(3)=1*32+2*31+1*30=16(10)。對于進制 10,同樣有11(10)* 11(10)= 121(10)。這種情況下,應該輸出 3。如果沒有合適的進制,則輸出 0。

【輸入】

一行,包含三個整數p、q、r。 p、q、r的所有位都是數字,并且1 ≤ p、q、r ≤ 1,000,000。

【輸出】

一個整數:即使得p*q=r成立的最小的B。如果沒有合適的B,則輸出0。

【輸入樣例】

6 9 42

【輸出樣例】

13

【源程序】

#include<iostream> using namespace std; int judge(int x,int B);int main() {int a,b,c;int i;cin>>a>>b>>c;for(i=2; i<=40; i++) //枚舉2-40進制if(judge(a,i)*judge(b,i)==judge(c,i))//找到使a*b=c成立的最小進制B{cout<<i<<endl;return 0;}cout<<0<<endl;return 0; }int judge(int x,int B) {int value=1,num=0;while(x!=0)//將一個數化為B進制數{if((x%10)>=B)//B進制下不可能出現大于等于B的數位return 99999;num+=((x%10)*value);value*=B;x/=10;}return num; }

?

總結

以上是生活随笔為你收集整理的确定进制(信息学奥赛一本通-T1413)的全部內容,希望文章能夠幫你解決所遇到的問題。

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