Mình có 1 bài muốn tham khảo ý kiến mọi người.
Đề bài:
Viết các số tự nhiên từ 0 -> vô cùng thành 1 dãy liên tiếp. VD: 012345678910111213
Nhập số n. In ra vị trí xuất hiện của số n trong dãy.
VD: n = 45. In ra 5
Mình có làm theo kiểu chạy vòng lặp. Ném từng số vào chuỗi. Đến khi nào tìm trong chuỗi thấy thì in ra và dừng lại. Mà nó chỉ chạy ở TH n nhỏ.
Mong ý kiến đóng góp của mọi người.
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
using namespace std;
string s = "";
int n = 1000000000;
int k = 369;
template <typename T>
std::string genericToString(const T& t)
{
std::ostringstream oss;
oss << t;
return oss.str();
}
void f(){
for(int i=0;i<=n;i++){
if(s.find(genericToString(k)) != -1){
cout << s.find(genericToString(k)) + 1 << endl;
break;
}
s += genericToString(i);
}
cout << s << endl;
}
int main(){
f();
return 0;
}