首页 > 代码库 > PAT 1001. 害死人不偿命的(3n+1)猜想 (15)
PAT 1001. 害死人不偿命的(3n+1)猜想 (15)
C++实现
1 #include <iostream> 2 #include <math.h> 3 using namespace std; 4 5 int StringToInt(string n) 6 { 7 int result = 0; 8 int count = 1; 9 int tmp = 0;10 11 //cout << "StringToInt" << endl;12 13 for(char ch : n)14 {15 //cout << ch << endl;16 //cout << (ch-48) << endl;17 tmp = pow(10,n.length()-count);18 count++;19 20 //cout << "tmp: " << tmp;21 //cout << " " << pow(10,tmp) << endl;22 result += (ch-48)*tmp;23 //cout << result << endl;24 }25 //cout << result << endl;26 return result;27 }28 29 void Callatz()30 {31 int input;32 string n;33 int count = 0;34 35 //cout<< "please enter the value of n: ";36 cin>>n;37 //cout<< "n = " << n << endl;38 39 input = StringToInt(n);40 //cout<< "input = " << input << endl;41 42 while( input != 1 )43 {44 if (input % 2 == 0)45 input = input/2;46 else47 input = (3*input+1)/2;48 count++;49 }50 51 cout << count;52 }53 54 55 int main()56 {57 Callatz();58 return 0;59 }
Python实现
1 #n = int(raw_input()) 2 n=eval(input("please enter the value of n")) 3 #print(n) 4 count = 0 5 while (n != 1): 6 if (n%2 == 0): 7 n = n/2 8 else: 9 n = (3*n+1)/210 #print(n)11 count += 112 print(count)
PAT 1001. 害死人不偿命的(3n+1)猜想 (15)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。