文|Seraph
#include
#include
using namespace std;
int main()
{
string strIN;
int iLen=0;
while(cin>>strIN)
{
iLen=strIN.size();
}
cout<<iLen<<endl;
}
#include
#include
#include
using namespace std;
int main()
{
int result=0;
string strIN;
char chIN;
getline(cin, strIN);
chIN = cin.get();
if(isupper(chIN))
chIN=tolower(chIN);
for(auto ch : strIN)
{
if(isupper(ch))
{
ch=tolower(ch);
}
if(ch==chIN)
result++;
}
cout<<result<<endl;
return 0;
}
#include
#include
using namespace std;
int main()
{
int iNum;
int iNumber;
while(cin>>iNum)//牛客网的测试题,输入一定要记得用这种形式,否则可能通不过。假设可以重复输入使用。
{
set<int> result;
for(int i=0; i<iNum; i++)
{
cin>>iNumber;
result.insert(iNumber);
}
set<int>::iterator itr;
for(itr=result.begin(); itr!=result.end(); itr++)
{
cout<<*itr<<endl;
}
}
return 0;
}
#include
#include
using namespace std;
const int BASE = 8;
int main()
{
string strIN;
while(getline(cin, strIN))
{
if(strIN.size()>0)
{
for(int i=0; i<strIN.size(); i++)
{
if(i%BASE==0 && i!=0)
cout<<endl;
cout<<strIN[i];
}
int lastNum = strIN.size()%BASE;
if(lastNum>0)
{
for(int i=0; i<BASE - lastNum; i++)
{
cout<<'0';
}
}
cout<<endl;
}
}
return 0;
}
#include
using namespace std;
int main()
{
int a;
while(cin>>hex>>a)
{
cout<<a<<endl;
}
return 0;
}
上面这个解法挺逗的,但题目可能考察的是个十百千的转换。
#include
using namespace std;
int main()
{
long lNum;
while(cin>>lNum)
{
long lTemp= lNum;
for(long i=2; i<=lNum; i++)
{
while(lTemp%i==0)
{
lTemp /= i;
cout<<i<<" ";
}
}
}
return 0;
}
#include
using namespace std;
int main()
{
float a;
cin>>a;
cout<<int(a+0.5);
return 0;
}
#include
#include
using namespace std;
int main()
{
int iNum;
while(cin>>iNum)
{
map<int, int> mapRes;
int iKey,iValue;
for(int i=0; i<iNum; i++)
{
cin>>iKey>>iValue;
mapRes[iKey] += iValue;
}
for(auto itr=mapRes.begin(); itr!=mapRes.end(); itr++)
{
cout<<itr->first<<" "<<itr->second<<endl;
}
}
return 0;
}
#include
#include
#include
using namespace std;
int main()
{
string strIN;
while(cin>>strIN)
{
set<char> setI;
for(auto rItr=strIN.rbegin(); rItr!=strIN.rend(); rItr++ )
{
if(setI.find(*rItr)==setI.end())
{
cout<<*rItr;
setI.insert(*rItr);
}
}
cout<<endl;
}
return 0;
}
#include
#include
#include
using namespace std;
int main()
{
string strIN;
while(cin>>strIN)
{
set<char> setCh;
int iRes=0;
for(auto itr=strIN.begin(); itr!=strIN.end(); itr++)
{
if(setCh.find(*itr)==setCh.end())
{
setCh.insert(*itr);
iRes++;
}
}
cout<<iRes<<endl;
}
return 0;
}
突然发现这里使用find是多余的,因为set不会插入相同的字符,最后输出set的大小就行。
#include
#include
#include
using namespace std;
int main()
{
string strIN;
while(cin>>strIN)
{
set<char> setCh;
int iRes=0;
for(auto itr=strIN.begin(); itr!=strIN.end(); itr++)
{
setCh.insert(*itr);
}
cout<<setCh.size()<<endl;
}
return 0;
}
#include
#include
using namespace std;
int main()
{
int iNum;
while(cin>>iNum)
{
while(iNum/10)
{
cout<<iNum%10;
iNum /= 10;
}
cout<<iNum<<endl;
}
return 0;
}
上面的解法是通过除余的方法,对整数的每位数字进行输出处理。
也可以,先将整数转为string类型,再做反转处理。现代C++鼓励使用STL、泛型编程。
#include
#include
#include
using namespace std;
int main()
{
int iNum;
while(cin>>iNum)
{
string strNum;
strNum = to_string(iNum);
reverse(strNum.begin(), strNum.end());
cout<<strNum<<endl;
}
return 0;
}
#include
#include
using namespace std;
int main()
{
string strIN;
while(cin>>strIN)
{
reverse(strIN.begin(), strIN.end());
cout<<strIN<<endl;
}
return 0;
}
#include
#include
#include
using namespace std;
string reverse(string sentence)
{
reverse(sentence.begin(), sentence.end());
auto itrPre = sentence.begin();
for(auto itr=sentence.begin(); itr!=sentence.end(); itr++)
{
if(*itr==' ' && itrPre!=itr)
{
reverse(itrPre, itr);
itrPre=itr+1;
}
}
reverse(itrPre, sentence.end());
return sentence;
}
int main()
{
string strIN;
while(getline(cin,strIN))
{
strIN = reverse(strIN);
cout<<strIN<<endl;
}
return 0;
}
后面发现,好像是自己想多了,其实直接将单词反转拼接就OK了。。。
#include
#include
#include
using namespace std;
string reverse(string sentence)
{
stringstream ss(sentence);
string str;
string temp;
while(ss>>str)
{
temp = str + ' ' + temp;
}
return temp;
}
int main()
{
string strIN;
while(getline(cin,strIN))
{
strIN = reverse(strIN);
cout<<strIN<<endl;
}
return 0;
}
#include
#include
using namespace std;
int main()
{
int iNum;
while(cin>>iNum)
{
multiset<string> mulSetStr;
string strIN;
for(int i=0; i<iNum; i++)
{
cin>>strIN;
mulSetStr.insert(strIN);
}
for(auto s : mulSetStr)
{
cout<<s<<endl;
}
}
return 0;
}
iNum &= iNum-1
的含义是,消除最后一位1。#include
using namespace std;
int main()
{
int iNum;
while(cin>>iNum)
{
int iCount=0;
while(iNum)
{
iNum &= iNum-1;
iCount++;
}
cout<<iCount<<endl;
}
return 0;
}