// a015.
矩陣的翻轉
#include <iostream>
using namespace std;
int main( )
{
int
m,n,r,c;
int
a[100][100];
while ((cin>>m>>n))
{
for(r=0;r<m;r++)
{
for(c=0;c<n;c++)
{
cin>>a[r][c];
}
}
for(c=0;c<n;c++)
{
for(r=0;r<m;r++)
{
cout<<(r==0?"":"
")<<a[r][c];
}
cout <<endl;
}
}
return 0 ;
}
//
a020. 身分證檢驗 ,本題不需檢查輸入長度、及格式是否符合,純計算檢查碼是否正確
#include <iostream>
using namespace std;
int main( )
{
int
seq[]={10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,27,28,29,32,30,31,33};
string pid;
while ( cin>>pid ) {
int L=seq[int(pid[0]-'A')]; //字母轉二位數
int sum=L/10+(L%10)*9; // 第1位*1,第2位*9
// 接著8個數字分別 *8 ~ * 1
for(int i=1;i<=8;i++) sum+=( (pid[i]-'0')*(9-i) ) ;
sum+=(pid[9]-'0'); //最後檢查碼 *1
if(sum%10) cout<<"fake"<<endl; // ÷10的餘數非 0
else cout<<"real"<<endl;
}
return 0 ;
}
//
a022. 迴文
#include <iostream>
using namespace std;
int main( )
{
string str;
int
i,n,s;
while( cin>>str )
{
s=str.size();
n=s/2; //字串長度的一半
s--;
for(i=0;i<=n;i++)
{
if(str[i]!=str[s-i]) break;
}
if(i>n) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}
//
a024. 最大公因數(GCD)
#include <iostream>
using namespace std;
int main( )
{
int
a,b,q,r;
while( cin>>a>>b )
{
r=a%b;
while(r) {
a=b;
b=r;
r=a%b;
}
cout<<b<<endl;
}
return 0;
}
//
a034. 二進位制轉換
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
int k;
while(cin >>k){
vector <char> s; //動態陣列,以push_back加0或1
while( k )
{
s.push_back((k%2)?'1':'0');
k/=2;
}
for(k=s.size()-1;k>=0;k--) cout <<s[k];
cout<<endl;
}
return 0 ;
}
//
a038. 數字翻轉
#include <iostream>
using namespace std;
int main( )
{
int
n,b;
while( cin>>n )
{
b=0;
while(n)
{
b=b*10+n%10;
n/=10;
}
cout<<b<<endl;
}
return 0 ;
}
//
a054. 電話客服中心
#include <iostream>
using namespace std;
int main( )
{
int
seq[]={10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,27,28,29,32,30,31,33};
string pid;
int i;
int ladd[26]; //字母要加的總和 先算出
for(i=0;i<26;i++)
ladd[i]=seq[i]/10
+ seq[i]%10*9;
// 開始讀資料
while ( cin>>pid )
{
int sum=0;
for(int i=0;i<=7;i++) sum+=( (pid[i]-'0')*(8-i) ) ;
sum+=(pid[8]-'0');
for(i=0;i<26;i++)
if( (sum+ladd[i])%10==0 )
cout<<char('A'+i); // 26個字母各試一次
cout<<endl;
}
return 0 ;
}
//
a065. 提款卡密碼
#include <iostream>
using namespace std;
int main( )
{
string pid;
int i;
while ( cin>>pid )
{
for(i=0;i<6;i++)
{ if(pid[i]>pid[i+1])
cout<<int(pid[i]-pid[i+1]);
else cout<<int(pid[i+1]-pid[i]);
}
cout<<endl;
}
return 0 ;
}
//
a149. 乘乘樂
#include <iostream>
using namespace std;
int main()
{
long long p; //有可能 > int ? 好像不會,使用int即可
int
i,n;
string inp;
cin
>>n;
while(n--)
{
cin>>inp;
p=1;
for(i=0; i<inp.size(); i++)
p=p*(inp[i]-'0');
cout<<p<<endl;
}
return 0;
}
//
a215. 明明愛數數
#include <iostream>
using namespace std;
int main( )
{
int i,m,n;
long long s;
while ( cin>>n>>m )
{ //
m , n 有可能為負 ?
i=1;s=n; //第1個數
while(s<=m) // > m 才停
{
++n;
s += n;
++i;
}
cout<<i<<endl;
}
return 0 ;
}
//
a216. 數數愛明明
#include <iostream>
using namespace std;
int main( )
{
int i,n;
long long f[30000],g[30000];
f[0]=g[0]=1;
int m=1;
while ( cin>>n )
{
if(n>m)
for(i=m;i<n;i++)
{
f[i]=(i+1)+f[i-1];
g[i]=f[i]+g[i-1];
}
cout<<f[n-1]<<" "<<g[n-1]<<endl;
}
return 0 ;
}
//
a224. 明明愛明明 ,只有26字母,只要成對即可
#include <iostream>
using namespace std;
int main( )
{
int i,k,n;
string s;
bool m[26];
while ( cin>>s )
{
for(i=0;i<26;i++) m[i]=false; // 26個字母做記號用
n=s.size();
for(i=0;i<n;i++)
{
if(s[i]>='A' && s[i]<='Z') m[s[i]-'A'] = !m[s[i]-'A'];
if(s[i]>='a' && s[i]<='z') m[s[i]-'a'] = !m[s[i]-'a'];
}
for(i=0,k=0;i<26;i++) if(m[i]) k++;
if(k>1) cout <<"no..."<<endl;
else cout <<"yes
!"<<endl;
}
return 0 ;
}
0 意見:
張貼留言