洛谷-《模拟与高精度》

#include<iostream>
#include<string.h>
#include<string>
#include<cctype>
#include <algorithm>
using namespace std;

//1024
//1.记录W,L数目
//2.出口条件为(W>=n||L>=n)&&(abs(W-L)>=2)
//3.条件E结束
//4.函数count,输入n塞制,输出比分
// char s[100000];
// void count(int n)
// {
//     int W = 0,L=0;
//     int i =0;
//     do
//     {
//         if(s[i]=='L')L++;
//         else if(s[i] =='W')W++;
//         i++;
//         if((W>=n||L>=n)&&(abs(W-L)>=2))
//         {
//             cout<<W<<":"<<L<<endl;
//             L=0,W=0;
//         }
//     }while(s[i]!='E');
//     cout<<W<<":"<<L<<endl;

// }
// int main()
// {
//     char ch;
//     int i =0;
//     //存储
//     do
//     {
//         cin>>ch;
//         s[i++] = ch;
//     }
//     while(ch!='E');
//     count(11);
//     cout<<endl;
//     count(21);
//     //
// }


//2670
//1.两个字符数组,第一个数组存储输入
//2.排查'*',第二个数组四周如果不是'*'+1,并显示
// char arr1[101][101],arr2[101][101];
// int main()
// {
//     int n,m;
//     cin>>n>>m;
//     memset(arr2,'0',101*101*sizeof(char));
//     for(int i =1;i<=n;i++)
//     {
//         for(int j=1;j<=m;j++)
//         {
//             cin>>arr1[i][j];
//         }
//     }

//     //排查
//     for(int i =1;i<=n;i++)
//     {
//         for(int j=1;j<=m;j++)
//         {
//             if(arr1[i][j]=='*')
//             {
//                 arr2[i - 1][j-1]++;
// 				arr2[i - 1][j]++;
// 				arr2[i - 1][j + 1]++;
// 				arr2[i][j - 1]++;
// 				arr2[i][j + 1]++;
// 				arr2[i + 1][j - 1]++;
// 				arr2[i + 1][j]++;
// 				arr2[i + 1][j + 1]++;
//             }
            
//         }
//     }
//     //输出
//     for(int i =1;i<=n;i++)
//     {
//         for(int j=1;j<=m;j++)
//         {
//             if(arr1[i][j]=='*')
//                 cout<<arr1[i][j];
//             else
//                 cout<<arr2[i][j];
//         }
//         cout<<endl;
//     }

// }

//1563

// 1.输入小人朝向和职业(两个变量)用两个数组来存储
// 2.输入左右方向和距离(两个变量)
// 3.行列(两个变量)
// 4.00 11 顺时针,01 10逆时针
// int arr1[2000];
// char arr2[2000][20];
// int main()
// {
//     int n,m,dir,tan;
//     int target=0;
//     cin>>n>>m;
//     for(int i=0;i<n;i++)
//     {
//         cin>>arr1[i]>>arr2[i];
//     }
//     for(int i =0;i<m;i++)
//     {
//         cin>>dir>>tan;
//         if(arr1[target]==dir)
//         {
//             target = target-tan;
//             if(target<0)
//             {
//                 target = n-(-target)%n;
//             }
//         }
//         else
//         {
//             target = target+tan;
//             if(target>=n)
//             {
//                 target = (target)%n;
//             }
//         }
//     }
//     cout<<arr2[target];
// }

//高精度问题
//p1009
// 1.分成n份高精度求和
// 2.每个n!是高精度乘法

// string mul(string s1,int n)//高精度*低精度
// {
//     int arr1[100],arr2[100];
//     memset(arr1,0,100*sizeof(int));
//     memset(arr2,0,100*sizeof(int));

//     int len_s1 = s1.length();
//     int len_s2 = len_s1;
//     string c;
//     //逆序存储
//     for(int i =0;i<len_s1;i++)
//     {
//         arr1[i] = s1[len_s1-1-i]-'0';
//     }
//     //乘
//     for(int i =0;i<len_s1;i++)
//     {
//         arr2[i] +=arr1[i]*n;
//         if(arr2[i]>10)
//         {
//             arr2[i+1]+=arr2[i]/10;
//             arr2[i]%=10;
//         }
//     }
//     //长度
//     while(arr2[len_s2]>=10)
//     {
//         arr2[len_s2+1]=arr2[len_s2]/10;
//         arr2[len_s2]%=10;
//         len_s2++;
        
//     }
//     for(int i =0;i<len_s2;i++)
//     {
//         c += to_string(arr2[len_s2-1-i]);
//     }
//     return c;
// }
// string add(string s1,string s2)//高精度+高精度
// {
//     int arr1[100],arr2[100],arr3[100];
//     memset(arr1,0,100*sizeof(int));
//     memset(arr2,0,100*sizeof(int));
//     memset(arr3,0,100*sizeof(int));

//     int len_s1 = s1.length();
//     int len_s2 = s2.length();
//     int len_s3 = (len_s1>len_s2)?len_s1:len_s2;
//     string c;
//     //逆序存储
//     for(int i =0;i<len_s1;i++)
//     {
//         arr1[i] = s1[len_s1-1-i]-'0';
//     }
//     for(int i =0;i<len_s2;i++)
//     {
//         arr2[i] = s2[len_s2-1-i]-'0';
//     }
//     //加
//     for(int i =0;i<len_s1;i++)
//     {
//         arr3[i]+=arr1[i]+arr2[i];
//         if(arr3[i]>10)
//         {
//             arr3[i+1]+=arr3[i]/10;
//             arr3[i]%=10;
//         }
//     }
//     //长度
//     if(arr3[len_s3]>0)len_s3++;
//     for(int i =0;i<len_s3;i++)
//     {
//         c += to_string(arr3[len_s3-1-i]);
//     }
//     return c;
// }
// int main()
// {
//     int n;
//     cin>>n;
//     string item = "1";
//     string S = "0";
//     for(int i =1;i<=n;i++)
//     {
//         item = mul(item,i);
//         S = add(S,item);
//     }
//     cout<<S;
//     // cout<<add("1423","435");
// }

//p1518
//1.开一个字符数组,存输入值
//2.记录牛,人坐标(4个全局变量)
//3.记录牛,人方向(2个全局变量)
//4.移动函数->返回坐标
// int x_a,y_a,x_b,y_b;
// int dir_a = 0,dir_b =0;//向北
// char arr[12][12];
// int mytime =0;
// void move(int &x,int &y,int &dir)
// {
//     int xi = x;
//     int yi = y;
//     int diri = dir;
//     if(diri==0)xi--;
//     else if(diri ==1)yi++;
//     else if(diri ==2)xi++;
//     else if(diri ==3)yi--;
//     //判断障碍物
//     if(arr[xi][yi]=='*')
//     {
//         dir = (++dir)%4;
//     }
//     else
//     {
//         x = xi;
//         y = yi;
//     }

// }
// int main()
// {
//     //初始化
//     memset(arr,'*',12*12*sizeof(char));
//     for(int i =1;i<=10;i++)
//     {
//         for(int j =1;j<=10;j++)
//         {
//             cin>>arr[i][j];
//             if(arr[i][j]=='C')
//             {
//                 x_a = i;
//                 y_a = j;
//             }
//             else if(arr[i][j]=='F')
//             {
//                 x_b = i;
//                 y_b = j;
//             }
//         }
//     }
//     //寻找
//     while(1)
//     {
//         mytime++;
//         move(x_a,y_a,dir_a);
//         move(x_b,y_b,dir_b);
//         if((x_a==x_b)&&(y_a==y_b))
//         {
//             cout<<mytime;
//             break;
//         }
//         if(mytime>100000)
//         {
//             cout<<0;
//             break;
//         }
//     }
// }

//p1098

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值