所有测试用例都将小数点转换为二进制数
Conversion of Decimal to Binary number with all the test Cases
这是我的实现,我将数字拿到数学计算中,然后将其放入堆栈中...但是,即使我在问题上的逻辑是正确的,它也无法产生正确的输出...请检测我的实施中有什么问题。这是我学院两家公司提出的竞争性编程问题。因此,请帮助我纠正实施。我只想知道我的实现问题....
实际问题:输入:输入的第一行包含一个整数t表示测试用例的数量。每个测试箱都会有一条线,其中包含n。输出:在一行中打印所有具有1到n的十进制值的二进制数。约束:1≤t≤1061≤n≤106
示例:输入:225
输出:1 101 10 11 100 101
解释:TestCase 1:1到2的二进制数为1和10。
这是所需的输出输入:225
输出:1 101 10 11 100 101
我的输出是:输入:13您的输出是:
可以在这里告诉我不正确输出的原因。
#include<iostream>
#include <stack>
#include <queue>
using namespace std;
int main()
{
int T ;
cin>>T;
while(T--)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
stack <int > s;
int num=i;
while(num>0)
{
s.push(num%2);
num=num/2 ;
}
for(int j=0;j<s.size();j++)
{
cout<<s.top();
s.pop();
}
cout<<" ";
}
cout<<endl;
}
return 0
这是所需的输出
Input:
2
2
5
Output:
1 10
1 10 11 100 101
我的输出是:
For Input:
1
3
Your Output is:
可以在这里告诉我不正确输出的原因。
问题在这里:
for(int j=0;j<s.size();j++)
{
cout<<s.top();
s.pop();
}
假设s
有四个元素。
在第一次迭代中,j
为0,s.size()
为4。
第二,j
为1,s.size()
为3。
第三,j
为2,s.size()
为2,因此循环终止。
那是两个迭代,而不是四个。
而不是计算要弹出的时间,只需弹出直到堆栈为空的时间:
while (!s.empty())
{
cout << s.top();
s.pop();
}
相关文章:
- visual在c++中将十进制数转换为二进制数
- 二进制数之和(使用C样式字符串)
- 以 10 c++ 为基数显示 1024 位二进制数
- 二进制数和位标志'x'
- C++ 二进制数到整数值的数组
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- dev如何在C++中比较二进制数
- Pybind11:在C++中使用Pybind11转换numpy数组的问题
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 向后打印二进制数
- 使用位黑客反转二进制数
- 添加两个二进制数(整数数组)
- 从 0 到 n 的二进制数,具有相同数量的字符/
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- 所有测试用例都将小数点转换为二进制数
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 如何缩放二进制数组以保留值
- 使用堆栈将十进制数转换为二进制数
- C++ 将二进制数组强制转换为类
- 如何将小数数组转换为二进制数数组