1028. Hanoi Tower Sequence (高精,除2)
来源:互联网 发布:淘宝店铺怎么改店名 编辑:程序博客网 时间:2024/05/01 00:22
思路:
设第n个数为k,则该序列的结构为:
。。。。。。。。。。。。。。。o。。。。。。。。。。。。。。
2^(k-1)-1个数 数字k 2^(k-1)-1个数
因此2^(k-1)-1+1=n,即
2^(k-1)=n;
因此,输入n,只要判断n被2整除的次数,再+1即得结果.
第一次写复杂爆了,超时了,但是结果还是对的,忽略它吧
#include <iostream>#include <string>using namespace std;bool dividable(string s){int num=0;for(int j=0;j<s.length();j++){num=10*num+s[j]-'0';num%=2;}if(num==0) return true;else return false;}int main(){int t;cin>>t;for(int z=1;z<=t;z++){string s,temp="";cin>>s;if(s.length()==1){int a=s[0]-'0',c=0;while(a%2==0){c++;a/=2;}cout<<c+1<<endl;continue;}int count=0,num;while(dividable(s)){count++;temp.push_back(char((s[0]-'0')/2+'0'));num=(s[0]-'0')%2*10+s[1]-'0';for(int i=1;i<s.length()-1;i++){temp.push_back(char(num/2+'0'));num=(num%2)*10+s[i+1]-'0';if(i==s.length()-2) temp.push_back(char(num/2+'0'));}s=temp;temp="";}cout<<count+1<<endl;}return 0;}
第二次把字符串先转换为数字串,然后直接用原字符串保存数字,快了很多。
#include <iostream>#include <string>using namespace std;int main(){ int t; cin>>t; for(int z=1;z<=t;z++) { string s; cin>>s; for(int i=0;i<s.length();i++) s[i]-='0'; int count=0; while(1) { for(int i=0;i<s.length()-1;i++) { s[i+1]+=(s[i]%2)*10; s[i]/=2; } if(s[s.length()-1]%2==1) break; s[s.length()-1]/=2; count++; } if(z!=1) cout<<endl; cout<<"Case "<<z<<": "<<count+1<<endl; } return 0;}
- 1028. Hanoi Tower Sequence (高精,除2)
- 1028. Hanoi Tower Sequence
- 1028. Hanoi Tower Sequence
- Sicily.1028. Hanoi Tower Sequence
- Sicily 1028. Hanoi Tower Sequence
- sicily 1028.Hanoi Tower Sequence
- Sicily 1028. Hanoi Tower Sequence
- SOJ 1028. Hanoi Tower Sequence
- Sicily 1028. Hanoi Tower Sequence
- Sicily 1028. Hanoi Tower Sequence
- sicily 1028. Hanoi Tower Sequence
- sicily 1028. Hanoi Tower Sequence
- Sicily 1028. Hanoi Tower Sequence
- 算法学习【6】 - 1028. Hanoi Tower Sequence
- [sicily online]1028. Hanoi Tower Sequence
- Sicily 1028 Hanoi Tower Sequence
- Sicily 1028 Hanoi Tower Sequence
- 1028 Hanoi Tower Sequence 高精度除 和取模 pair<string,int>
- 各常见排序算法实践
- 8种人将被淘汰
- java---实现数组的输出
- usaco 1.5.4 Checker Challenge
- Android模拟打电话程序实现
- 1028. Hanoi Tower Sequence (高精,除2)
- 多一分陪伴少一分孤独
- .NET调用osql.exe执行sql脚本创建表和存储过程
- POJ-1432(n!的位数-数论)
- javaScript从入门到提高前需要注意的细节:变量部分
- 在Android模拟器中模拟GPS、打电话、发短信……
- It is just the beginning!
- UIControl IOS控件编程—IOS开发
- 站长常用搜索引擎命令大全