#include <iostream> using namespace std; int main(){ int n; cin>>n; while (n){ long long x=1,ans=0,k; cin>>k; while (k){ ans+=k%2*x; x*=3; k/=2; } cout<<ans<<endl; --n; } return 0; }
7
8
2015
8
2015
XJOI 1515 猫猫的小鱼
6
22
2015
22
2015
XJOI 1701 二进制除法
//中考考后第一更。我深深地感到自己实在是个大弱逼 //这题代码还是从别人那抄来的。。。 //http://www.cppblog.com/ccl0326/archive/2009/07/31/91792.html //只好多写点注释,洗清罪名 //这美丽的代码,瞬间自惭形秽 #include <iostream> #include <string> #include <math.h> using namespace std; string str1; string str2; int len1,len2; int num1,num2; long StrToInt(string str) //字符串转换+进制转换 { long reNum=0; int len=str.length(); int p=0; for (int i=len-1;i>=0;i--) { int u=(int)pow(2,p);p++; switch(str[i]) { case '1':reNum+=u;break; default:break; } } return reNum; } string IntToStr(int value) { string str=""; while (value!=0) { int x=value%2; if (x==0) str='0'+str; else str='1'+str; value=value/2; } return str; } void readp() { cin>>str1; cin>>str2; num2=StrToInt(str2); } void solve() { string str=""; for (int i=0;i<str1.length();i++) { str+=str1[i]; num1=StrToInt(str); if (num1>=num2) //把除数扩大10^x倍后再减,提高效率 { int x=num1-num2; str=IntToStr(x); } } if (str=="") str="0"; //唯一自己写的一句话,特判 cout<<str<<endl; } int main() { readp(); solve(); return 0; }
6
5
2015
5
2015
XJOI 1702 奇怪的函数
//很容易想到要二分,因此关键是求x^x的位数 //x^x的位数=log10(x^x)+1=x*log10(x)+1 #include <iostream> #include <cmath> using namespace std; int main(){ long long n,l=1,r=2000000000,m; cin>>n; while (l!=r){ m=(l+r)>>1; long long t=m*log10(m)+1; if (t>=n) r=m; else l=m+1; } cout<<l; return 0; }