c++程序:输入一个大整数n然后利用循环搜索k,使得3 k < =n < 3 k+1 输出整数k
来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/28 00:28:35
c++程序:输入一个大整数n然后利用循环搜索k,使得3 k < =n < 3 k+1 输出整数k
内容:
输入一个大整数n然后利用循环搜索k,使得3 k < =n < 3 k+1
输出整数k
输入说明:
一行一个整数n
输出说明:
一行一个整数
输入样例:
21
输出样例
:
2
我的程序是这样的:#include
#include
#include
#include
using namespace std;
int main()
{
long long a,k,sum=3;
cin>>a;
for (k=1;;k++)
{
sum=sum*3;
{
if (sum>=a)
{
cout
内容:
输入一个大整数n然后利用循环搜索k,使得3 k < =n < 3 k+1
输出整数k
输入说明:
一行一个整数n
输出说明:
一行一个整数
输入样例:
21
输出样例
:
2
我的程序是这样的:#include
#include
#include
#include
using namespace std;
int main()
{
long long a,k,sum=3;
cin>>a;
for (k=1;;k++)
{
sum=sum*3;
{
if (sum>=a)
{
cout
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
class bint
{
string numb;
public:
bint() {}
bint(int x)
{
while(x)
{
numb.push_back(x % 10);
x /= 10;
}
}
void push_back(int x)
{
numb.push_back(x);
}
int length() const
{
return numb.length();
}
char& operator[](int x)
{
return numb[x];
}
void resize(int x)
{
numb.resize(x);
}
void clear()
{
numb.clear();
}
friend bint operator*(bint &a, bint &b)
{
if (!a.length() || !b.length())
return bint(0);
bint c;
for (int i = 0, sa = a.length(); i<sa; i++)
{
for (int j = 0, sb = b.length(); j<sb; j++)
{
if (i + j == c.length())
{
c.push_back(a[i] * b[j]);
}
else
{
c[i + j] += a[i] * b[j];
}
}
}
int last = 0;
for (int i = 0, sc = c.length(); i < sc; i++)
{
c[i] += last;
last = c[i] / 10;
c[i] %= 10;
}
while (last)
{
c.push_back(last % 10);
last /= 10;
}
return c;
}
friend istream& operator>>(istream &in, bint &a)
{
a.clear();
string s;
in>>s;
for (int i = s.length() - 1; i >=0 ; i--)
{
a.push_back(s[i] - '0');
}
for (int i = a.length() - 1;; i--)
{
if (i == -1)
{
a.clear();
break;
}
if (a[i] != 0)
{
a.resize(i + 1);
break;
}
}
return in;
}
string toString() const
{
if (!length())
return "0";
string s;
for (int i = numb.length() - 1; i >=0 ; i--)
{
s.push_back(numb[i] + '0');
}
return s;
}
friend ostream& operator<<(ostream &out, const bint &a)
{
out<<a.toString();
return out;
}
friend bool operator>(const bint&a, const bint &b)
{
if (a.length() > b.length())
return true;
if (a.length() < b.length())
return false;
return a.toString() > b.toString();
}
};
int run()//大数类型的情况,如果真的是大数,把run改名为main就好了.
{
bint a;
while(cin>>a)
{
bint sum = 1, _3 = 3;//sum应该从1开始
for(int k = 1;; k++)
{
sum = sum * _3;
if (sum > a)//这里应该是严格大于号
{
cout<<k - 1<<endl;//输出k-1
break;
}
}
}
return 0;
}
int main()//普通的情况
{
long long a;
while(cin>>a)
{
long long sum = 1, _3 = 3;//sum应该从1开始
for(int k = 1;; k++)
{
sum = sum * _3;
if (sum > a)//这里应该是严格大于号
{
cout<<k - 1<<endl;//输出k-1
break;
}
}
}
return 0;
} 题目说的是大数n,真正的大数就是用long long也存储不下的数了.
#include<cstdio>
#include<string>
using namespace std;
class bint
{
string numb;
public:
bint() {}
bint(int x)
{
while(x)
{
numb.push_back(x % 10);
x /= 10;
}
}
void push_back(int x)
{
numb.push_back(x);
}
int length() const
{
return numb.length();
}
char& operator[](int x)
{
return numb[x];
}
void resize(int x)
{
numb.resize(x);
}
void clear()
{
numb.clear();
}
friend bint operator*(bint &a, bint &b)
{
if (!a.length() || !b.length())
return bint(0);
bint c;
for (int i = 0, sa = a.length(); i<sa; i++)
{
for (int j = 0, sb = b.length(); j<sb; j++)
{
if (i + j == c.length())
{
c.push_back(a[i] * b[j]);
}
else
{
c[i + j] += a[i] * b[j];
}
}
}
int last = 0;
for (int i = 0, sc = c.length(); i < sc; i++)
{
c[i] += last;
last = c[i] / 10;
c[i] %= 10;
}
while (last)
{
c.push_back(last % 10);
last /= 10;
}
return c;
}
friend istream& operator>>(istream &in, bint &a)
{
a.clear();
string s;
in>>s;
for (int i = s.length() - 1; i >=0 ; i--)
{
a.push_back(s[i] - '0');
}
for (int i = a.length() - 1;; i--)
{
if (i == -1)
{
a.clear();
break;
}
if (a[i] != 0)
{
a.resize(i + 1);
break;
}
}
return in;
}
string toString() const
{
if (!length())
return "0";
string s;
for (int i = numb.length() - 1; i >=0 ; i--)
{
s.push_back(numb[i] + '0');
}
return s;
}
friend ostream& operator<<(ostream &out, const bint &a)
{
out<<a.toString();
return out;
}
friend bool operator>(const bint&a, const bint &b)
{
if (a.length() > b.length())
return true;
if (a.length() < b.length())
return false;
return a.toString() > b.toString();
}
};
int run()//大数类型的情况,如果真的是大数,把run改名为main就好了.
{
bint a;
while(cin>>a)
{
bint sum = 1, _3 = 3;//sum应该从1开始
for(int k = 1;; k++)
{
sum = sum * _3;
if (sum > a)//这里应该是严格大于号
{
cout<<k - 1<<endl;//输出k-1
break;
}
}
}
return 0;
}
int main()//普通的情况
{
long long a;
while(cin>>a)
{
long long sum = 1, _3 = 3;//sum应该从1开始
for(int k = 1;; k++)
{
sum = sum * _3;
if (sum > a)//这里应该是严格大于号
{
cout<<k - 1<<endl;//输出k-1
break;
}
}
}
return 0;
} 题目说的是大数n,真正的大数就是用long long也存储不下的数了.
c++程序:输入一个大整数n然后利用循环搜索k,使得3 k < =n < 3 k+1 输出整数k
pascal金字塔编写一个程序,输入两个整数N和K(N,K
请问1^k+2^k+3^k+.+n^k=?
c语言 求1^k+2^k+3^k+……+n^k,假定n=6,k=4
求证:lim1^k+2^k+3^k+4^k+.n^k/n^(k+1)=1/k+1
阶乘计算编写程序,对给定的n(n≤100),计算并输出k的阶乘k!(k=1,2,…,n)的全部有效数字.由于要求的整数可
求证:Ck^K+Ck^(k+1)+Ck^(k+2)+Ck^(k+3)+...+Ck^(k+n)=C(k+1)^(k+n+
c语言要求输入n,k.求1的k次方加2的k加次方3的k次方加到n的k次方 希望用简单的循环结构解答 没学过power 等
1^k+2^k+3^k+.+n^k 有无表达式
整数分拆公式p(n+k,k)=p(n,1)+p(n,2)+.+p(n,k) 如何证明
输入n个整数,输出其中最小的k个 JS做
已知n,k均大于1 的整数,求证:1+2(-k)次方+3(-k)次方+…..+n(-k)次方 ﹤2